merge conflict resolution
Give TripleStore a chance to optimize Iterators
We do it after the iterators have a chance to simplify themselves first.

NB also need to make sure to Close() all unused iterators so we don't
leave stray database connections around.
initial postgres backend implementation. very slow
move transactions into the iterator to make cursors more stable/reliable
adding LRU and deferred constraints for loading
new schemas, data structs, and iterators, oh my!

making "provenance" a node type instead of a varchar in DB
adding data to TSVals for triples per discussion on google/cayley#25
splitting iterator implementations to reduce overhead/typecasts
bring in line with upstream
fix copy-paste bug
update for new interfaces
resolving merge conflict w/ pbnjay:postgres
update for new registry
simple optimization and bugfix
somewhat functional, SQL-based optimization for iterators
more iterator optimization

Iterators now don't open a db transaction until the first call to
Next(), and automatically close the db transaction when the last result
is observed.

Additional, Node iterators will cache their values if below a minimal
size threshold.

NB Tags are not properly propagated in OptimizeIterator
cleaning up merge conflicts w/ pbnjay:postgres
removed cruft from mergefest.
cleaning up merge madness.
merge cleanup continues.
merge these two versions of history.
merge cleanup