feat(*): enable snapshots by default

Ben recently added test coverage for snapshots so we should enable it in
etcd. Lets do this.

https://github.com/goraft/raft/commit/1d66f6a111793e66877d4ce8427c2e2e6b9e29df
feat(server): log on snapshot success or failure

lila.local: snapshot of 12 events completed at index 479
lila.local: snapshot of 12 events at index 491 attempted and failed: handling snapshot
Merge pull request #507 from philips/turn-snapshots-on-by-default

feat(*): enable snapshots by default
feat(*): bootstrap initial commit

Setup the flags, and checkin the docs. Lets do this!
refactor(server): move utilities into pkg

like camlistore lets move these utilities into a `pkg` prefix.
refactor(config): make config its own package

Refactor config into its own package. Trying to tease the config from
the server so that all of the control surfaces are exposed in the Server
for easier testing.
feat(bootstrap): wire up the flag

This wires up `-bootstrap-url` to some code (which crashes) :)
feat(bootstrap): initial working code

This is an initial version of the bootstrap code that seems to work
under the normal circumstances. I need to mock out a server that will
test out all of the error cases now.
bump(github.com/coreos/go-etcd): 526d936ffe75284ca80290ea6386f883f573c232
feat(discovery): fully working discovery now
chore(config): go fmt
fix(tests/server_utils): add a metrics bucket

This is required to avoid getting nil pointer exceptions if a peer joins
this test server.
tests(tests/functional): add tests for Discovery

This tests a variety of failure cases for the Discovery service
including:

- Initial leader failures
- Discovery service failures
- Positive tests for discovery working flawlessly
feat(Documentation/discovery-protocol): explain heartbeating

Explain more information about how the TTL works and etcds role.
Merge pull request #512 from philips/bootstrap-protocol

feat(discovery): initial working code
feat(docs): add cluster discovery documentation
Merge pull request #515 from robszumski/master

feat(docs): add cluster discovery documentation
feat(docs): add cluster discovery documentation
fix merge conflicts
fix(discovery): use prevExist instead of prevValue=init

Use PUT /_state?prevExist=true in the protocol instead of PUT
/_state?prevValue=init. This lets people point one vanilla etcd at the
key prefix of another vanilla etcd and have it just work.