raft: add removed and rmNodes

The usage of rmNodes:
1. tell removed node about its removal explicitly using msgDenied
2. prevent removed node disrupt cluster progress by launching leader election

removed indicates whether the node has been removed. It is set when apply
removal of itself, or receive msgDenied.

#1016 
why we need to test all the message type? They do not have any relation logically and practically(our implementation) as far as I can see. Also deny an msgDeny should never happen, right?