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.
// maybeDecrTo returns false if the given to index comes from an out of order message. Otherwise it decreases the progress next index and returns true.