Support parent diffs with Mercurial

This patch adds support for parent diffs to Mercurial when specifying specific
revisions. If the base revision is not included in the remote, a relevant
parent diff will be automatically determined.

This does not yet support using the --parent-branch to specify a parent when
posting the current tip.

Testing Done:
Wrote some new tests. Executed tests locally and everything appears to work as
expected!

Bugs: 3067

Reviewed at https://reviews.reviewboard.org/r/5207/