Refactor, remove accessors from abdt_conduit

We don't have a clear need to hide the underlying ReviewState from
clients of the ReviewStateCache and it is awkward to implement and use
the accessors.

Test Plan:
Update docs and sanity check
$ ./precommit.sh
Refactor, abdt_conduit creates its own cache

There doesn't appear to be a reason anymore to inject a cache into an
abdt_conduit.Conduit.

Go for the simpler option of hiding the cache within the Conduit.

Test Plan:
Exercise the changes with
$ ./precommit.sh
Refactor, initialize ReviewStateCache with conduit

Reduce overall complexity by removing the conduit setter and getter on
phlcon_reviewstatecache.ReviewStateCache and instead requiring a conduit
when it is created.

This makes it easier to work with and reduces the testing burden.

It appears the need for updating the conduit has disappeared.

Test Plan:
Update docs, exercise changed code
$ ./precommit.sh
Refactor, init _ReviewStateCache with callable

Reduce overall complexity by removing the callable setter and getter on
phlcon_reviewstatecache._ReviewStateCache and instead requiring a
callable when it is created.

This makes it easier to work with and reduces the testing burden.

Test Plan:
Update docs, exercise changed code
$ ./precommit.sh
Extend phlcon_reviewstatecache to support author

Cache authorPHID alongside review status and date modified, so that we
may later use it to speed up processing.
Refactor, phlcon_user: add_hint* -> add_user_hint*

Make the intent of these functions clearer by using 'username' instead
of 'user'.

Test Plan:
Make substitutions using rope-rename, manually check diff for unexpected
changes.

Look for missed substitutions
$ git grep add_hint

Update doc, standard tests
$ ./precommit.sh
Refactor, UserPhidCache->UsernamePhidCache

Make the intent of this class clearer by using 'username' instead of
'user'.

Update the names of local variables in the class' methods.

Test Plan:
Make substitutions using rope-rename, manually check diff for unexpected
changes.

Look for missed substitutions of the class' name
$ git grep UserPhidCache

Update doc, standard tests
$ ./precommit.sh
Fix phlcon_user.UsernamePhidCache to handle error

Handle the case where one or more hinted usernames don't exist when
retreiving phids in UsernamePhidCache. Raise UnknownUsername if the
directly requested username doesn't exist.

Raise OneOrMoreUnknownUsernames from query_users_from_usernames() in the
case where we the number of returned users differs from the number of
supplied usernames. This enables us to handle the specific error in
calling code.

Add some tests to exercise UsernamePhidCache, in particular the new
logic to handle unknown usernames.

Test Plan:

Update docs, exercise the new code with the new test and running the
arcyon exercises by running
$ ./precommit.sh
Add phlcon_user.UsernamePhidCache.get_username()

Make it possible to also query username->phid with the
UsernamePhidCache, this will be useful in Arcyon and Arcyd; both to
introduce new caching and to simplify existing caching.

Update query_users_from_phids() to raise OneOrMoreUnknownPhids so that
the condition can be handled explicitly.

Add test code to cover new UsernamePhidCache functionality.

Test Plan:

Update doc, exercise changed code with
$ ./precommit.sh

Exercise a bit more to be sure
$ ./testbed/arcyd/acceptance_tests.sh
Refactor, extract phlcon_user.response_from_att...

Extract a function from a common pattern of querying conduit in this
file, update the existing code to use this new function instead of
handling the query directly.

Test Plan:
Update doc, exercise affected code
$ ./precommit.sh
WIP
Revert "WIP"

This reverts commit de9db463bf473b359656f809ea84ce0ee2fb9d9d.
abdt_conduit uses cached author_phid

Cache expensive lookups on the author user, using the new cached
author_phid in ReviewStateCache and UsernamePhidCache.get_username().

Write the new author through to the cache when commandeering a review.

Exercise the author user cache by abandoning the review after
commandeering in the breathing tests.

Test Plan:

Exercise abdt_conduit as much as we can with
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh

Deliberately break the caching temporarily to make sure the breathing
test fails as expected.