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.
Fix #637. Truncate log file if the last request wasn't written properly
Update the changelog
Fix #640. Update cluster config to track the last used shard id and increment for new ones
Merge pull request #646 from influxdb/fix-640-duplicate-shard-ids

Fix #640. Update cluster config to track the last used shard id and incr...
Update CHANGELOG.md
Update CHANGELOG.md
Update CHANGELOG.md
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
Fix compilation error with the new toml lib
add lock around repsonse
Add some heartbeat info