db: Add a (with-connection) macro
db: Define a tables variable
Refactor hashing functions into util ns
db: Refactor counting logic into separate function
db: Refactor (create-tables) to use a sequence
db: Compactness refactors
db: Define public and private records fields
util: Add a keys->quoted-str conversion func
Refactor to use public and private record fields
db: Small refactors for cleanliness
db: Generate renaming table programatically
db: Refactor (search-response) into (search)
db: Implement multiple row insertion per connection

This modifies the implementation of the back-end's "add-record" function
so that it instead accepts a variable number of records, and retains a
single database connection to insert all of the values. This in effect
requires a O(1) time complexity overhead for establishing and closing
database connections, instead of the O(n) complexity required in order
to add individual row's one at a time.

The result of this change is a staggering decrease in data upload
times. For a dataset of 5773 records, the record insertion time is as
follows:

     Single row insertion per connection:      42.608 s
     Multiple row insertion per connection:    03.512 s

This demonstrates an approximate ~1200 % increase in performance as a
result of this patch.
Bump release version for '0.4.6'
db: Automatic indentation fix

Courtesy of ./scripts/indent.sh
Merge branch 'release/0.4.6'