Propagate more details about RKP failures

This change reworks the internals of the RemoteProvisioner APK in order
to do a better job of propagating error information from deeper within
the call stack up to the entry points. This is primarily to convey error
information to callers of GenerateRkpKeyService, to allow them to
differentiate whether or not a failure is permanent or transient.

Add unit tests to verify proper error handling and retry detection.

Bug: 227306369
Test: atest RemoteProvisionerUnitTests
Change-Id: If44d9c5b46b2dfce65c31f3cbd372cc754e1dfbe
7 files changed