DB caching using SQLite's restore/backup

DB is loaded into memory in its entirety, and queried as
needed.  This should be a lot faster than building persistent
data structures for everything that's in the DB up-front.
Upgrade SQLite driver
Use proper logging solution
Change print statements to log messages.  --cache-file

The SQLite cache filename can now be specified.  It's still
cache.sqlite by default.

With the exception of the results--which are written unadorned to
standard out--all log messages now go through slf4j
Updated README.md
Log message on cache persist