Abstract storage engines

This commit create a storage engine interface and modify shards to use
interface instead. It also adds a B-Tree implementation and benchmark
tool to compare the performance of the different storage engines.
Make the storage engine selectable from the config file
Remove LevelDb from the shard and the shard data store
keep track of the database type
Add support for rocksdb
Add support for hyperleveldb
fix the timing of the second write
Don't close the cache which could still be used
fix the directory
Make rocksdb optional, since we can't build it on travis
Merge branch 'b-tree'

This branch includes the following work:

- Abstraction of the storage engine
- HyperLevelDB, RocksDB and LMDB implementations
- Storage benchmarking tool
update the changelog

[skip ci]
Update README.md

Bumping docs version from 0.6 to 0.7 (current release)
Update README.md

Fixing broken "libraries for different languages" link.
Check for the libz, libbz2 and g++-4.7 before building
fix the awk in the make file
Merge pull request #661 from bcrisp/master

Updating documentation links to latest version

[skip ci]
Disable hyperleveldb and rocksdb on Mac
conditionally build hyperleveldb
Made build tmp directory configurable via TMPDIR.

The build process was originally hard coded to use /tmp but some
systems mount /tmp with noexec, causing the build to fail.  This
change allows the user (optionally) to specify a tmp dir.  E.g.,

TMPDIR=~/tmp make