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.
@xiangli-cmu Yes. When A becomes the leader of term 6, it clears its status and A.prs[B].match = 0.
But then it receives the msgAppResp sent out in term 4 period in Step 2, and sets A.prs[B].match = 10.
But they are different on index-10 log: A think it is {Term: 5, Index: 10}, and B think it is {Term: 4, Index: 10}. (B doesn't receive/send any message between Step 3 - Step 6)
So B will always deny msgApp, and A will always send msgApp from index 10.