abdi_processrepo: comment create_review()
Arcyd: assert branch.review_id_or_none as expected

Assert that we're not moving between branch states in such a way that
we drop or fabricate the review id.

Add extra tests to check_XC_MoveBetweenAllMarkedStates for moving from
the 'bad_pre_review' state.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: support moving bad_pre->new state directly

Currently we have to manually clear the tracking branch before moving
from 'bad_pre_review' to any other state.  Support moving directly by
making the clearing part of the implementation of branch.

Add a new test to explicitly measure the number of branches before and
after making this transition.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: don't clear bad_pre_review when retrying

To avoid thrashing the remote, don't clear the state of 'bad_pre_review'
branches before retrying them.  abdt_branch now supports moving directly
from bad_pre_review to one of the 'new review' states.

Test Plan:
Add extra run of arcyd to acceptance test
$ ./testbed/arcyd/acceptance_tests.sh
$ ./precommit.sh
Manually create and resolve an 'unknown user' review in
$ ./testbed/arcyd/test_shell.sh
paying attention to the tracking branches