Make sqlite backend way better

* use cached sqlite prepared statements for performance.
* use sqlite parameter binding to get proper escaping of blob, string types - backend can now handle things like strings that have quotes in them correctly.  Also blobs no longer need to be converted to/from ascii hex anymore.
* changed sqlite_back handling of boost::uuids::uuid type to be sqlite BLOB instead of string - so now it only takes 16 bytes instead of 36 bytes.
* Made better sqlite_back tests that utilize queryability
* Sqlite backend now tracks the source type of every column in every table - so when queries are run, it knows which c++ type to rebuild into.  Fixed uuids and blobs to rebuild into correct c++ types instead of std::strings like before.
* other minor tweaks.