Use the heartbeat interval as the timeout

Bump the test configs to 1000ms (1s) for now

FWIW: Something wrong is going on here, but I haven't been able to
figure it out
Merge pull request #620 from freeformz/use_interval

Use the heartbeat interval as the timeout
extract init config file into a variable
Merge pull request #626 from pmenglund/master

extract init config file into a variable
Close #636. Support `ms` as well as `m` as time precision when querying
Protect protobuf client from simultaneous calls to reconnect()

Thanks to @freeformz for noticing this bug. Previously reconnect()
acquired a lock on entry, but that didn't protect us from a situation
where reconnect() is called twice in a row. The first time, a new
connection will be established but the second call will disconnect this
connection and open a new one. This can cause unexpected results since
the request sent on the first connection may not get a chance to receive
a response before the second call to reconnect() closes the connection.
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.