Conditions hashes

First pass on allowing filtering and locking by hashes (and sql strings) as well as blocks.  Hash and sql based filtering is orders of magnitudes faster than block-based.  Sanitizers are left as blocks because 1) They are trickier to do otherwise, and 2) They operate on the 'shrunk' database and so are not very performance sensitive.

Mixing of block-based locks & filters with hash/sql string based filters is only partially supported.  Given the magnitude of the performance improvements, I'm inclined to restrict to only hash & sql based approaches, but not ready to pull the trigger on that without additional feedback.
I ended up using Sequel instead of Arel because sequel actually seemed to hew closer to Rails semantics than raw Arel (Rails appears to have added some different sugar on top).  Regardless, I'd rather use Arel or Sequel than this approach, but I couldn't get it to deal with the fact that postgres didn't allow using a left outer join to find what to remove, but instead wanted this funky 'where not exists' subquery syntax.  After a while I gave up fighting it and dropped down to sql.