Introduce RewriteHistoryOptions

RewriteHistory's multiple optional parameters make evolving the API
difficult. In particular, there was no way to change the parent
rewriter to operate on the full commit without a breaking change
(due to ambiguous overloads with sparse parameter use).
Map rewritten parents to rewritten commits