fix(mod/lock): Use dedicated channel to shutdown goroutine properly

If closeChan is available and stopWatchChan was closed by defer
select selects a single channel randomly. This causes a panic sending to closed
channel.
fix(mod/lock): Use CreatedIndex in the first node to watch

ModifiedIndex in the lock directory is not incremented and the event
store has only 1000 histories for now.

Acquiring a lock is not queued while (index - ModifiedIndex) > 1000 and
prevIndex exists.
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
feat(prevNode): add "prevNode" to "Set" response
feat(prevNode): add test for prevNode
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