SQLite optimization

After scaling old code up to test on 30k analysis plots, found out that
sqlite was taking its sweet time.  Implemented many (big) fixes to
optimize performance, so the 30k run in about 15s (down from 40m).
- Load input database into memory at beginning of program using
sqlitebackup
- Set journaling modes on in/out databases to volatile
- No longer delete DataTable objects (and hence the underlying
sqlite3_stmt) after use. Rather, save them in a map keyed by the SQL
used to create them. This allows for re-use of the statements (and
annoying memory leaks).
- Reworked how AnalysisPlot and ShrubRecords are created. Basically,
load entire input tables using single query and parse each row
appropriately. Saves a ton of time.
- Cache output (CREATE TABLE / INSERT INTO) queries until the program
finishes, then write them out sequentially inside a transaction.
- Rather than resetting a sqlite3_stmt after use and sqlite3_step-ing
again, only reset if the row pointer has actually moved.  Usually
re-used queries are single row records which only need to be stepped the
first time.
- Began implementation of threading using boost libraries.