phlgitu_ref: more helpers for working with refs

Add some more helpers for working with refs.

Test Plan:
$ ./precommit.sh
abdt_git: add test driver

Add a trivial test driver to exercise abdt_git.

Test Plan:
$ ./precommit.sh
abdt_git: get branch names from phlgit_showref

Prepare to supply hashes to abdt_branch by moving
abdt_git.get_managed_branches to use phlgit_showref to get the names of
branches.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
abdt_branch__t: move branch tests to abdt_git__t

Do more realistic testing of branches by moving the existing
'branch update' tests into abdt_git__t and create new branches after
each update to the 'arcyd repo' in the test setup.

This means that we will be able to test optimisations that rely on
clients abdt_branch re-creating branches after fetching.

Test Plan:
$ ./precommit.sh
Arcyd: add commit hash params to branches

Make it possible for abdt_branch.Branch to do cheaper has_new_commits()
tests by supplying the initial commit hashes of both it's branches.

This will also be useful for getting commit hashes into comments on
reviews.

Test Plan:
Also do the original, expensive test in has_new_commits() and assert
the result matches the new cheaper test.
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/loop_test.sh

Make some reviews in
$ ./testbed/arcyd/test_shell.sh
abdt_branch: remove expensive assertion

Remove the has_new_commits() assertion that checks the old, expensive
way of checking returns the same result as the new, cheaper one.

Test Plan:
$ ./precommit.sh
Arcyd: comment on reviews using full commit hashes

Include full commit hash of review branch when creating,
updating or landing reviews.

This makes it much easier to reconstruct history, without having to
resort to any separate audit logs.

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

Create, update and land review, verifying that hashes are as expected
$ ./testbed/arcyd/test_shell.sh