Arcyd: fix message typo when reducing diff context

Test Plan:
$ ./precommit.sh

check huge review generated by
$ ./testbed/arcyd/acceptance_tests.sh
Fix to update url_watcher before processing repos

Ensure that we refresh the state of the 'Git snoop' mechanism before we
actually start to process repos.  Otherwise we may not pull when we need
to and process out-of-date repositories.

Test Plan:
Make sure that snooping still works with
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
abdi_processrepolist: better names

Rename some vars and methods to do with loading repo configs to be more
intuitive.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: refactor passing of repo paths

Pass a straight-forward list of config file paths through to
abdi_processrepos, instead of faking command-line arguments and then
decoding them again.

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

check repos are loaded in dashboard with
$ ./testbed/arcyd/loop_test.sh
Arcyd: refactor, mv parse_config_file_list out

Move abdi_processrepolist._load_repo_configs to
abdi_repoargs.parse_config_file_list, this makes it re-usable from other
modules in a more expected place.

Test Plan:
Make sure repositories args are parsed by running these
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: fix phlurl_watcher__t flakiness

'test_A_Breathing' appears to be flaky in this test driver - depending
on random numbers to always be different.  Fix it to use numbers that
are guaranteed to be different.

Test Plan:
$ ./precommit.sh
phlurl_watcher: 'request object' for testability

Instead of taking a 'request function' for testing, update
phlurl_watcher.Watcher to take a requester object which could also be
the phlurl_request module.

This enables coverage of the 'refresh' method as well, which requires a
'get_all' method.

Test Plan:
$ ./precommit.sh
phlurl_watcher: add FileCacheWatcherWrapper

Make it easier to work with a url watcher by adding a wrapper that takes
care of loading and saving.

Test Plan:
switch breathing test to use the new wrapper
$ ./precommit.sh
Arcyd: use phlurl_watcher.FileCacheWatcherWrapper

Replace explicit calls to Watcher.load() and dump() with usage of the
new FileCacheWatcherWrapper.

Move the decision of where to store the urlwatcher_cache_path to
abdt_fs.Layout.

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

make sure snooping still works by poke and accepting in
$ ./testbed/arcyd/test_shell.sh
abdi_processrepoargs: publish fetch_if_needed

Make it possible to re-use abdi_processrepoargs.fetch_if_needed() by
making it public.

Test Plan:
$ ./precommit.sh
arcyd/test_shell: fix to use repo-snoop-url

Fix the Arcyd test_shell to actually use the local GitWeb server to
snoop on the local repositories.  This means that it's possible to test
the new 'arcyd fetch' command.

Test Plan:
poke and fetch with
$ ./testbed/arcyd/test_shell.sh
Arcyd: add fetch command

Make it possible to 'pre-fetch' repos in arcyd before cutting over by
adding a new 'arcyd fetch' command.

In further work we could add a read-only mode to 'arcyd start' for
keeping instances constantly in sync.

Test Plan:
Add 'arcyd fetch' to some tests
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh

Manually verify that fetch fetches special branches with
$ ./testbed/arcyd/test_shell.sh
Merge branch 'feature/arcyd_instance_cutover4' into feature/arcyd_instance_cutover3

Conflicts:
	py/abd/abdi_processrepolist.py