Split constraint checking into two pieces.

And move the transaction assurance up a level.  This is in prep for
insert/update/delete...I'm sure more refactoring will be needed.
'insert' method for db relations.

There will be a bunch of refactoring that will happen once these
mutation methods are available.  And a lot more tests are needed.

The big change here aside from adding insert is to move the
assurance of a transaction into a decorator, and simply requiring
that a transaction be active when the _check methods are run.
Shift __getitem__ up.

Makes more sense to have it before the mutate methods, I think.
May change my mind again later.
More insert examples, update transaction examples.

I decided to go ahead a flow the DB changes from the insert examples
into the later text, mostly because I wanted to switch the later
text to using explicit display calls anyway.
update method.

Getting this to work revealed some bugs in how I was using the
transaction machinery.  There's still more to do (see XXX comment about
transactionizing the constraints), and things are very inefficient at
this point.  But at least update works.