Add 'arcyd rm-repo' for removing repos

Introduce a command for symmetry with 'arcyd add-repo' for when we
want to stop watching a repository.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/test_shell.sh
  $ cd ../arcyd
  $ arcyd rm-repo localhost_fs_origin
  .. fail because arcyd is running ..
  $ arcyd stop
  $ arcyd rm-repo localhost_fs_origin
  .. success, verify files no longer exist ..
  $ arcyd fsck
  $ arcyd rm-repo localhost_fs_origin
  .. fail, doesn't exist ..
abdi_repo: extract 'fetch_special_refs'

Make it possible for us to re-use the fetch special refs code later by
extracting it to a new function.

Test Plan:
$ ./precommit.sh
arcyd/test_shell: create two arcyd instances

Make it easier to test migrating from one arcyd instance to another by
creating a second, inactive, arcyd instance in the test shell.

Test Plan:
$ ./testbed/arcyd/test_shell.sh
Add new 'arcyd fetch-special' command

This is useful for switching from one arcyd instance to another,
as arcyd never normally reads the special refs, it only writes them.

Admins will first need to stop the existing arcyd instance, then
'fetch-special' and finally start the other arcyd instance.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/test_shell.sh
    cd ..
    (cd dev; ./poke.sh)
    (cd dev; ./accept.sh)
    (cd arcyd2/var/repo/localhost_fs_origin; git show-ref)
    .. no landing branch ..
    (cd arcyd2; arcyd fetch-special --all)
    (cd arcyd2/var/repo/localhost_fs_origin; git show-ref)
    .. has landing branch ..
    (cd dev; ./poke.sh)
    (cd dev; ./accept.sh)
    (cd arcyd2; arcyd fetch-special --all)
    (cd arcyd2/var/repo/localhost_fs_origin; git show-ref)
    .. landing branch is updated ..