phlcon_differential: parse 'parse errors'

Enable handling of specific ParseCommitMessageResponse.errors by adding
support for converting them to new 'ParseCommitMessage*Fail' types.

Test Plan:
Add test case to exercise the parsing
$ ./precommit.sh
Arcyd: mv 'missing test plan' code to processrepo

Remove the need for the two-pass conduitgit.getFieldsFromBranch()
solution for amending a missing test plan.

Use the new phlcon_differential.parse_commit_message_errors() to
determine if the test plan is missing directly from the errors.

Remove conduitgit.getFieldsFromBranch().

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: use new classes to propagate user errors

Make it easier to accumulate and communicate non-fatal user errors by
creating new classes to describe them.

Accumulate them in abdi_processrepo.create_review() and handle them in
abdcmnt_commenter.

Test Plan:
$ ./precommit.sh
$ ./testbed/arcyd/acceptance_tests.sh
Arcyd: handle unknown reviewers more gracefully

Now that we can detect the 'unknown reviewers' parse error specifically,
we don't need to treat it as a fatal error and can instead display a
helpful warning on the review page.

Add 'test_unknown_reviewer' case to acceptance_tests.sh

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

exercise unknown reviewer and self reviewer with
$ ./testbed/arcyd/test_shell.sh