Checkable.py:
CheckableTest.py:
 - Wait until the end of check() to persist the current object to the
   database.
 - Adjust how the Dimension object is used based on it being updated
   from the checkables table by the load() method. Method
   update_category() is obsolete.
 - Don't process files when they are found in a directory, but later
   when we get to their record in the checkables table.

CrawlDBI.py:
CrawlDBITest.py:
 - Added support for "group by" on select requests and tests for that
   support.

Dimension.py:
DimensionTest.py:
 - Populate the population and sample summary dictionaries from the
   checkables table. The dimension table is obsolete. This also
   obsoletes a number of Dimension.py methods: db_init(), persist(),
   update_category(), _update_pct(), sum_total().
 - Updated tests to reflect use of the checkables table, removed
   obsolete tests.
Remove obsolete methods from Dimension.py -- persist(),
update_category(), _update_pct().
 - Track file fetch failures and whether they've been reported in the
   database so that we can give up after a few fetch attempts and
   report the problematic archive entry.
 - Improve database interaction -- with load(), persist(), .in_db, and
   .dirty
 - Handle timeouts in hashcreate, hashverify.
 - change the function prefix so there isn't a conflict with
   tcc_common.py
 - use crawl.cfg rather than tcc.cfg
Warn about quotes around parameter markers in SQL statements.
Move cvreport over to cvtool.py and deprecated it in crawl.py.
Fixes from production to get tape_copy_checker working (mostly)
Moving functionality from tape-copy-checker.py to tcc_common.py to
make it more flexible and accessible.