Arcyd: test abdt_differ, add phlgit_fixture

Fill out the test driver for abdt_differ.

Create a new 'phlgit_fixture' to help with exercising scenerios in Git.

Test Plan:
$ ./precommit.sh
Arcyd: reduce extremely larges changes to diffstat

Some changes are too large to review with Phabricator, users will still
expect some sort of feedback about the nature of the change and may wish
to use Phabricator and Arcyd to 'approve' and land the change.

In the worst case, we don't want a daemon to get in the way of a change
being landed if a fully informed human has decided to do so.

Attempt to display a diff stat of the change instead of the real diff,
which is too large.

Test Plan:
$ ./precommit.sh

added new 'test_large_add' case to acceptance_tests.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: report on diff reduction attempts

Improve the user experience when working with very large diffs, add
detail on measures taken to reduce the size of diffs.

Bubble 'reduction techniques' used to reduce diff sizes up to the repo
processor and supply to abdcmnt_commenter as warnings for the user.

Test Plan:
updated abdt_differ__t to check for reductions
$ ./precommit.sh

inspect comments left on big added file
$ ./testbed/arcyd/acceptance_tests.sh
abdt_differ: support huuge diffs by default

Increase the definition of
"largest amount of context conceivably needed".

One of the generated test data files is now > 10,000 lines, support
loading that into a review with full context.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: acceptance_tests - large file small change

Simulate making a small change to an enormous file to exercise the non
"very large change" path in the commenter.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
abdt_differ: support medium diff context amount

Introduce a third diff context setting so that it's not either
one extreme or the other.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
phlgit_diff__t: simpler tests with phlgitu_fixture
abdt_branch: fix ignoring .gitattributes

Checkout the review branch before diffing so that we take into account
the latest .gitattributes.  Git apparently uses the .gitattributes in
the working tree.

This fixes the case where users have tried to reduce the size of their
diff by adding '-diff' entries in their .gitattributes to no effect.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/loop_test.sh

re-create a recent failure to take .gitattributes into account with
$ ./testbed/arcyd/test_shell.sh
Arcyd: more detail on failed to create review

Put more information in the initial 'failed to create review' message
so it's easier to track down where the revision came from.

Test Plan:
$ ./precommit.sh

review problem reviews from
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: more detail on 'no history' error

Update commenter to leave a more helpful message when a review has been
created from a branch which seems to introduce no additional commits.

Make suggestions as to next actions for the (guessed) author.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh

view results of
$ ./testbed/arcyd/test_shell.sh
    $ git push HEAD:r/master/no_history
Arcyd: better error message when no diff on review

Make more useful comments when a review has been created or updated in
such a way that it has no difference against the base branch.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh

inspect review from
$ ./testbed/arcyd/test_shell.sh
    $ git checkout -b r/master/no_diff
    $ git commit --allow-empty -m 'empty!'
    $ git push -u origin r/master/no_diff
    $ git commit --allow-empty -m 'empty!'
    $ git push -u origin r/master/no_diff