Sql backend: basic implementation and some tests

Also a few raco refactoring and fixes inline.

@7andrew7 take a gander? To be honest, I kind of / really hate this.
How hard would it be for SQLCatalog to implement the same interface as fakedb?  It's already pretty close.  This would allow us to run all of  of raco.myrial.query_tests (assuming we can swap in a different test fixture, which seems doable).