Use BSON to cache query results, add precise timer functions

* Because JSON-DRY has some problems with very large records
  BSON will now be used to serialize query results in the cache.
  It's slower for small results, but much faster for big ones.

* Added alchemy.time(), .timeEnd() and .timeTotal() for more
  precise timings than console.time(), since these use the
  process' hrtime() method.

* Added alchemy.nanotime() function, which will return the current
  time in nanoseconds.