move phlgitu_ref.parse_ref_hash -> phlgit_revparse

Move the low-level call to rev-parse down into an individual module so
that others in phlgit might use it later.

Test Plan: $ ./precommit.sh
Arcyd: maintain log of landed branches for gc'ing

Make it possible to for users to safely clean up landed branches locally
by maintaining a log of all the branches which have been landed and
their sha1's before being squashed on to the base branch.

In later work we can write a simple client app to do the actual clean
up.

Test Plan:
added breathing test
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: limit landinglog to 1000 entries and rotate

To prevent unchecked growth of the landinglog, limit it to 1000 entries
and truncate the log if it grows larger than that, this should be
sufficient for a couple of months for a team that moves 100 reviews per
week.

Update write_log() to write lists of LogItem to simplify truncation.

Hide get_log_raw() to discourage breaking the abstraction.

Test Plan:
add exercise to breathing test (comment out due to long run time)
$ ./precommit.sh
add new command 'barc', client for arcyd

To make the arcyd workflow easier, create a client application which
will be able to do things like:

  - safely clean up local branches that have been landed
  - validate review branches before pushing them
  - show the status of review branches
  - assist in creating review branches

Created an empty new project with stubs for a command-suite app,
smoketests, autodoc.

Test Plan: $ ./precommit.sh
WIP