First pass of "fake" services on Ravenwood.

One of our eventual goals with Ravenwood is to support usage of
system services from test code.  A recent change added support for
"real" services on Ravenwood, and this change expands that to add
support for "fake" services.

Some services are so tangled with dependencies it would take a
long time until we'd be able to run their "real" code.  Also, some
services with deep hardware dependencies that it can be difficult
to add new abstraction layers to support Ravenwood.  Finally, we
want to support service owners that only have resources to meet
the "Pareto principle", where enabling 20% of their functionality
on Ravenwood is enough to unblock 80% of test use-cases.

Thus, we're supporting teams bringing either "real" or "fake"
implementations of their services.  Since all test interactions
still go through published FooManager and FooManagerInternal-style
interfaces, teams can start with a "fake" and slowly transition
to using more of their "real" code over time, without having to
update test clients.

And as a final reminder, because Ravenwood requires test suites
like CTS, we're already verifying that "fake" services behave
similarly to the "real" services on physical devices.

Bug: 325506297
Test: atest CtsContentTestCasesRavenwood
Change-Id: I8ed5bd030e03143c15cb9fa945bbdcb0b412611e
12 files changed