Revert should clean up repository state when there is nothing to revert

Currently - when calling Revert that results in no changes to revert, the repository is left in a reverting operation. From the command line - git will cleanup the operation state (unless you are reverting with the --no-commit option).

This change is to update Revert to follow that behavior. One thing I considered was adding a `RevertStatus.NothingToCommit`, as it might be unexpected to get a `RevertSatus.Reverted` result when nothing was reverted. But I think that is not needed as this can be inferred from the result (`RevertStatus.Reverted` + `null` commit indicates that there was nothing to revert). In this case `RevertStatus.Reverted` would mean that these changes were already reverted (even if no new revert commit was generated).
I'm not sure I follow the reasoning behind this (However, I'm not a hardcore Reverter, so there's that :wink:).

Providing we're reverting once again the same commit, there's nothing to actually do, the workdir and the index would stay untouched. Thus, I don't understand why the `RevertStatus` would change depending on the `commitOnSuccess` value.

Similarly, why would the `repo.Info.CurrentOperation` be set to `Revert` if no change to the index or workdir has been applied?

/cc @carlosmn @ethomson  @dahlbyk