Fix and optimize Mercurial summary and description guessing

_set_description() was previously busted because of a variable name
mismatch.

_set_description() was previously making 2 hg process calls. This has
been optimized into a single process call.

The --follow argument has been removed because it is deprecated in
modern Mercurial clients and it only applies to `hg log <file>`, which
we weren't doing.

We also changed parsing of description messages so we can robustly
extract what description corresponds to which commit. This allows us to
easily strip off the undesired base commit.

Tests for summary and description guessing were added.

The behavior for description population is arguably wrong since the
first line of the tip summary is duplicated between the summary and
description. This could be changed with a follow-up.

Also, the previous behavior ordered descriptions from tip to base. This
patch reorders them from base to tip. It is the opinion of the patch
author that the description should be in commit order.

Testing Done:
Tests added. Ran test suite locally.

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