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

  -- Default (get/set/set-default)
     "recursion"  -- update policy...

pqxxobject::field_proxy
  -- proxy for a pqxxobject::field.  Used to expose a subset of field
     functionality.

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.

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

  -- autoupdate/autoinsert method to insert/update as appropriate.

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


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.

pqxxobject::query class:
  -- specialise transaction to take a query as a parameter.
