If an transaction is committed, objects need updating after successful
commit.  Transaction abort should not affect objects.  These
requirements require object refresh on both transaction commit and
abort.


RowConvert has ability to create single rows, or update single rows
(using a primary key).


pqxxobject:row_base:
  -- ability to request update
  -- general signals: changed, inserted, deleted, updated
  -- holds general state (uninitialised, initialised, inconsistent)
                         (modified, unmodified)
  -- pointer to (usually empty) pqxxobject::transaction_base.

pqxxobject::row<>:
  -- override row_base virtual methods and on_foo functions.
  -- update and serialisation functions.