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/composd/Android.bp b/compos/composd/Android.bp
index 0a25f05..9887483 100644
--- a/compos/composd/Android.bp
+++ b/compos/composd/Android.bp
@@ -13,6 +13,7 @@
         "compos_aidl_interface-rust",
         "libandroid_logger",
         "libanyhow",
+        "libbinder_common",
         "libbinder_rs",
         "libcompos_common",
         "libcomposd_native_rust",
diff --git a/compos/composd/src/service.rs b/compos/composd/src/service.rs
index fadca6c..2a67a27 100644
--- a/compos/composd/src/service.rs
+++ b/compos/composd/src/service.rs
@@ -22,13 +22,13 @@
 use android_system_composd::aidl::android::system::composd::IIsolatedCompilationService::{
     BnIsolatedCompilationService, IIsolatedCompilationService,
 };
-use android_system_composd::binder::{self, BinderFeatures, Interface, Status, Strong};
+use android_system_composd::binder::{self, BinderFeatures, Interface, Strong};
 use anyhow::{bail, Context, Result};
+use binder_common::new_binder_service_specific_error;
 use compos_aidl_interface::aidl::com::android::compos::{
     CompilationResult::CompilationResult, FdAnnotation::FdAnnotation,
 };
 use log::{error, info};
-use std::ffi::CString;
 
 pub struct IsolatedCompilationService {
     instance_manager: InstanceManager,
@@ -59,8 +59,9 @@
 
 fn to_binder_result<T>(result: Result<T>) -> binder::Result<T> {
     result.map_err(|e| {
-        error!("Returning binder error: {:#}", e);
-        Status::new_service_specific_error(-1, CString::new(format!("{:#}", e)).ok().as_deref())
+        let message = format!("{:?}", e);
+        error!("Returning binder error: {}", &message);
+        new_binder_service_specific_error(-1, message)
     })
 }