pqxxobject::field
  -- Rows can automatically bind to child changed signal (traits?)

  -- Default (get/set/set-default)
     "recursion"  -- update policy...
     -- set with option to query add method??

Part of field<>?
pqxxobject::field_spec<V>
  current value V
  default value V
  read/write enum FIELD_SPEC_READ | FIELD_SPEC_WRITE
  section name  string  "major grouping"
  category name string  "minor grouping"
  order         unsigned int  priority within group

pqxxobject:row_base:
  -- holds general state (uninitialised, initialised, inconsistent)
                         (modified, unmodified)
     modified/unmodified state needs holding as a bool (as an optimisation tweak).

  -- object trees should only be checkpointed at the root, but
     children should know that they have been checkpointed.
     (checkpointing should set transaction id, and then set id in all
      fields--set_transaction_id() ?)

  -- row refresh should be immediate, not deferred until transaction commit/abort.
     OR, should it occur at transaction commit/abort also?

  -- holds transaction id (set when checkpointed)

pqxxobject::table:
  -- insert and input iterators as a way to process result sets using STL
     algorithms.  Also general bidi iterators.

pqxxobject::transaction():
  -- static global thread-safe transaction id counter
  -- get_transaction() returns the current transaction id number.

Generic row:
  -- map of name:field, where name is a string and field is a pqxxobject::field_base.
  -- get/set row by name (templated functions)
  -- default insert/update/delete/refresh rules
  -- ordering of database work, e.g. recursion of field after/before others.
