Extract a library for common binder-related things

Initially this just unifies the various copies of we have of
new_binder_exception(), and adds a variation for service-specific
errors. (I thought this would help me solve my problem with missing
error info, but it turns out I was wrong.) I'm intending to move more
things here though to facilitate reuse.

Bug: 186126194
Test: atest -p
Change-Id: I82187903b55c4cd64307065761e1e03c4e6012f4
diff --git a/compos/src/compsvc.rs b/compos/src/compsvc.rs
index 55d9d64..954adf5 100644
--- a/compos/src/compsvc.rs
+++ b/compos/src/compsvc.rs
@@ -19,9 +19,9 @@
 //! actual compiler.
 
 use anyhow::Result;
+use binder_common::new_binder_exception;
 use log::warn;
 use std::default::Default;
-use std::ffi::CString;
 use std::path::PathBuf;
 use std::sync::{Arc, RwLock};
 
@@ -36,7 +36,7 @@
     ICompOsService::{BnCompOsService, ICompOsService},
 };
 use compos_aidl_interface::binder::{
-    BinderFeatures, ExceptionCode, Interface, Result as BinderResult, Status, Strong,
+    BinderFeatures, ExceptionCode, Interface, Result as BinderResult, Strong,
 };
 
 const AUTHFS_SERVICE_NAME: &str = "authfs_service";
@@ -154,7 +154,3 @@
 fn get_authfs_service() -> BinderResult<Strong<dyn IAuthFsService>> {
     Ok(authfs_aidl_interface::binder::get_interface(AUTHFS_SERVICE_NAME)?)
 }
-
-fn new_binder_exception<T: AsRef<str>>(exception: ExceptionCode, message: T) -> Status {
-    Status::new_exception(exception, CString::new(message.as_ref()).as_deref().ok())
-}