Introduce Repository.CherryPick.

Okay so, this is pretty weird, but from the looks of it, CherryPick has lots of copied stuff from RevertOptions and GitRevertOpts (basically a 1:1 mirror.)

Also, the unit test are not yet complete. Imo, they should include almost the same tests as RevertFixture. But using MergeRepo as the test repo since it is already branched.
I'm not sure about removing the param, though. This would let the caller decide which signature to use for the committer. Either guessing it from the ambient config or just building one on purpose.