raft: add removed

The usage of removed:
1. tell removed node about its removal explicitly using msgDenied
2. prevent removed node disrupt cluster progress by launching leader election

It is set when apply node removal, or receive msgDenied.

#1016 
GC stuff is not that severe because our expectation is that machine removal happens infrequently.

recovery from snapshot stuff could be checked here:
https://github.com/coreos/etcd/issues/1208