Callers used to have access to both the AsyncReceiveCommits and the
underlying ReceiveCommits. This was confusing at best, and in the
presence of multiple threads (or, eventually, retrying) broken at worst.
Try to simplify the package interface by forcing all callers to go
through AsyncReceiveCommits. It's still somewhat non-obvious, but at
least there is only one choice.
To support tests that want to assert over specific error message
strings, factor out a public ReceiveConstants class.
Change-Id: I1760faed4c2d4d508c38ec8a698f3e5c2aae2c35