Assorted client fixes.

The most important change is to ensure we hold a reference to
IVirtualizationService to stop the service manager killing the service
process. (I had thought holding the IVirtualMachine would suffice, but
it doesn't.)

Also added code to send the VM's stdout/stderr to the host log, and
modified compsvc to log to stderr instead of the VM log (so we can see
it). I made this a command line arg since we don't always want it.

One downside is that it causes compsvc to crash if nothing is reading
from stderr (broken pipe); as a workaround I've changed the tests to
use a config that doesn't enable it. (This is because we're using "vm
--daemonize" to start the VM; we should maybe stop doing that.)

Also made some tweaks to the client connection code - with the aim of
encapsulating all the unsafe code into one class (which hopefully will
eventually be extracted to a library somewhere), so it is easy to
reason about.

Bug: 186126194
Test: manually run compos_verify_key
Test: atest -p
Change-Id: Icdfc795215b236f0148e93cab34e2f6a0420a933
diff --git a/compos/Android.bp b/compos/Android.bp
index 2af19c8..f77b2ca 100644
--- a/compos/Android.bp
+++ b/compos/Android.bp
@@ -42,6 +42,7 @@
         "libbinder_rs",
         "libclap",
         "libcompos_common",
+        "libenv_logger",
         "liblibc",
         "liblog_rust",
         "libminijail_rust",