Arcyd: simulate unreliable Git service

Exercise the exception reporting and tryloop handling code with a new
testbed script 'unreliable_git_loop_test.sh'.

This shares a lot of script with 'loop_test.sh' so factor out the common
stuff and make each script use the common one.

Test Plan:
$ ./testbed/arcyd/loop_test.sh
$ ./testbed/arcyd/unreliable_git_loop_test.sh
Arcyd: report tryloop fails

Update the abdt_branch tryloops to also report on each failure so it's
possible to get warnings if a system we depend on is stressed.

Add abdt_logging so we can easily log from anywhere.

Add abdt_tryloop so we can easily retry where appropriate.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
$ ./testbed/arcyd/unreliable_git_loop_test.sh
Arcyd: DO push landinglog

Revert "arcyd: don't push landinglog"

This reverts commit 62c3698b64731c079c32e6896c1fc2cc0b94934d.

Conflicts:
	py/abd/abdt_branch.py

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