_rows_ is not a public api, rename to _rows.
_all is not descriptive, rename to _expns.

It is just a shorthand for expression_namespace.
Stop double updating the DB.

Now that we have insert, update, and delete doing the DB updates,
we only need to do a DB update in _update_db_rels if the value
came in via __setitem__ and isn't already a db relation.
Finish delete, prove we are persisting changes.

I added a final doc section to prove that the in memory copy of the tables
matches what gets loaded from the disk if we close and reopen the DB,
thus proving we are correctly persisting the data.  Which we weren't,
for delete...I forgot I hadn't finished it.

Also some other small changes, one of which ought to have a test but
doesn't yet.

I needed to fix relation comparison to be able to get 'True' out of my
test: I was checking by type before, but need to check that the headers
match instead to allow for subclasses and work-alikes.

For the key when I'm matching rows I need to handle the case of no key.
I thought about defaulting key to be all the columns, but I specifically
avoided that because dinsd does, so instead I handle it in the update
and delete methods.  This is tested for delete at the moment, but I'll
probably break that later and so should add a test to the torture test.
In a similar vein, I fixed the fact that update was using the key values
from the updated row instead of the key values from the existing row,
but there's no test for that bug.

The biggest fix, though, was to the transaction machinery.  I wasn't
updating the correct element of the maps list in the chainmaps, so the
nested transaction did not get persisted.
DRY refactoring on sql expression computation.
Make debug_sql work.

The goal is for this to be per-thread, but I haven't written the
tests to confirm that that works yet.
Add threading test for debug_sql, and make it work