raft: do not decrease nextIndex and send entries for stale reply

We need to handle message duplication and reordering.

When follower denies a `msgApp`, it attaches the msg with the index of the `msgApp` that it denies to. 

When leader receives a rejection, it checks:
if the follower has matched, the rejection must be stale and should ignore.
if the next of the follower does not match with the rejected index, the rejection must be stale and should ignore.
Also we do not care about Byzantine problem... For example, in step 2 B can send a message with a future term, etc..