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
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: automatically prune landed branches

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.

Don't set up the local repo to fetch the upstream landinglog if it
doesn't exist yet.

There's no point in setting up the local repo to fetch the landinglog
ref if it doesn't exist, in fact this can present the user with some
very puzzling errors.

Test Plan:
poke, accept and gc in
$ ./testbed/arcyd/test_shell.sh
$ ./precommit.sh
Arcyd: use 'barc gc' in system tests

To cover both the client and server side of the 'landinglog', use
'barc gc' to clean up local branches generated during system tests.

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