phlgit_log: add 'abbrev_hash' field to Revision

Widen phlgit_log.Revision to include an 'abbrev_hash' field.

This is useful wherever we're displaying hashes on screen as typically
we only need the hash which disambiguates the commit now as opposed to
'in all likelyhood for all time'.

Shorter hashes mean we can fit more on the screen and there's less
"noise" to filter out.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
git-phab-log: new command for viewing git history

To make it easier to audit the commit history of a particular
repository, add a new command which understands Phabricator fields in
the Git log and can perform simple queries.

Test Plan:
ran this in a number of repos to verify output is as expected.

    $ git-phab-log
git-phab-log: refactor, split main()

Test Plan:
try git-phab-log on existing repo
git-phab-log: filter if phab reviewed

Add the option to filter revisions by whether they went through a
Phabricator review or not.

Test Plan:
$ ./precommit.sh
my_repo/ $ git-phab-log --only-phab-reviewed
my_repo/ $ git-phab-log --no-phab-reviewed
my_repo/ $ git-phab-log
git-phab-log: filter by approvers

Add the option to filter revisions by the absence or presence of
particular approvers.

Test Plan:
$ ./precommit.sh
myrepo/ $ git-phab-log --approved-by-any-of user1 user2
myrepo/ $ git-phab-log --approved-by-none-of user1 user2
myrepo/ $ git-phab-log --approved-by-any-of user1
myrepo/ $ git-phab-log --approved-by-none-of user1
myrepo/ $ git-phab-log
git-phab-log: add trivial smoketest

Simple exercise the help option of git-phab-log as a minimal smoketest.

Test Plan:
$ ./smoke_tests.sh
git-phab-log: support pagers and other pipes

Prevent annoying exception output when simply exiting from pagers like
'less' or simply piping into 'head'.

Test Plan:
$ ./precommit.sh
myrepo/ $ git-phab-log | less