raft: should not decrease match and next when handling out of order msgAppResp
raft: always check leader changes in node run loop
raft: fix start term
*: fix Procfile
raft: not set applied when restored from snapshot

applied is only updated by application level through Advance.
etcdserver: recover from snapshot before applying requests
etcdserver: check and select committed entries to apply
etcdserver: recover cluster when receiving newer snapshot
etcdserver: export Member.StoreKey
etcd4: migration from v0.4 -> v0.5
Fix up migration tool, add snapshot migration

Fixes all updates since bcwaldon sketched the original, with cleanup and
into an acutal working state. The commit log follows:

fix pb reference and remove unused file post rebase

unbreak the migrate folder

correctly detect node IDs

fix snapshotting

Fix previous broken snapshot

Add raft log entries to the translation; fix test for all timezones. (Still in progress, but passing)

Fix etcd:join and etcd:remove

print more data when dumping the log

Cleanup based on yichengq's comments

more comments

Fix the commited index based on the snapshot, if one exists

detect nodeIDs from snapshot

add initial tool documentation and match the semantics in the build script and main

formalize migration doc

rename function and clarify docs

fix nil pointer

fix the record conversion test

add migration to test suite and fix govet
*: gracefully stop etcdserver
etcdserver: add buffer to the sender queue
version: bump to alpha.3
integration: add test for member restart
integration: add integration test for remove member
etcdserver: refactor ValidateClusterAndAssignIDs
*: etcdserver.sender -> rafthttp.Sender
etcdserver: rename sender.go -> sendhub.go
*: etcdhttp.raftHandler -> rafthttp.RaftHandler