etcdserver: recover snapshot before applying committed entries

fixes #1617 
The promise in Ready interface is from #1715 
The old one cannot happen because of the promise in Ready interface.
It is kind of covered by this test:
https://github.com/coreos/etcd/blob/master/raft/raft_test.go#L1007