Move abdi_repo.fetch_special_refs() to abdt_git

Prepare to re-use fetch_special_refs() more by moving it to a
lower-level package.
Fix fetch_special_refs() to checkout master first

It's not possible to fetch directly to the current branch. So before
fetching special refs, checkout 'master'.
Fix checkout_..._fetch_special_refs to force fetch

We want to enable the case where users have intervened to prune the
refs/arcyd/landed history.  Enable non-ff fetches by modifying the
refspec to start with '+'.
arcyd/acceptance_tests: use bash safety features

Comment the existing bash switches and add some new ones to catch
certain errors.

Test Plan:
$ ./testbed/arcyd/acceptance_tests.sh
arcyd/accept...sh: extract 'create_review_branch'

It's quite common in the arcyd/acceptance_tests.sh to create a fresh new
review branch.  Extract a bash function to reduce code duplication.

Test Plan:
$ ./testbed/arcyd/acceptance_tests.sh
arcyd/acceptance_tests: init two arcyd instances

Make it possible to test cutting over between two arcyd instances by
setting up two instances initially.

In later work we'll actually test cutting between them.

Test Plan
$ ./testbed/arcyd/acceptance_tests.sh
arcyd/acceptance_tests: only test r-branch scheme

Remove some of the redundancy from the acceptance tests by no longer
exercising the 'classic branch scheme'.

The 'exercise_arcyd' script exercises the 'classic branch scheme' so
it's still covered.
arcyd/acceptance_tests: test clean_cutover_path

Add a test to exercise cutting over from one arcyd instance to another
when there are no reviews in progress.

Test Plan:
$ ./testbed/arcyd/acceptance_tests.sh
arcyd/acceptance...: test_in_progress_cutover_path

Add a test to exercise cutting over from one arcyd instance to another
when there is a review already in progress.

Test Plan:
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: fetch special refs when fetching repos

Make it easier to cutover between repositories by fetching special refs
every time arcyd fetches a remote repository.  This removes the need for
the special command 'fetch-special', cutting over now simply means
stopping one instance and starting another.

Update acceptance tests to do no special cutover steps.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Remove 'arcyd fetch-special' command

This command is no longer needed, remove it.  Arcyd now fetches the
special refs automatically.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
arcyd/acceptance...: test pruning landing log

Add a test to the arcyd acceptance tests to make sure that we can
manually prune the landing log and have that change persist across new
reviews.

Previously this may have gone wrong because arcyd wasn't fetching the
special refs with a refspec beginning with '+', which enables non-ff
updates.

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