Arcyd: test_shell - make accept.sh available

Add a new 'accept.sh' available in the 'test shell' environment so that
you can use 'poke.sh' to create new reviews and 'accept.sh' to accept
those reviews without going into the web interface.

Test Plan:
Poke and accept in
$ ./testbed/arcyd/test_shell.sh
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
barc gc: stub out the menu for setting up to fetch

To help users with the potentially fiddly config to fetch
'refs/arcyd/landinglog' locally, add a prompt if it doesn't appear to be
already set up.

Introduce phlsys_choice to help with presenting such menus to the user.

Test Plan:
poke 'barc gc' a bit
$ ./precommit.sh
phlsys_choice: keep input on same line as prompt
barc gc: automatically prune landed branches

Test Plan:
poke, accept and gc in
$ ./testbed/arcyd/test_shell.sh

$ ./precommit.sh