rpc_binder: Refactor C/Rust wrappers for RpcSession

Existing wrappers around RpcSession do not allow to configure parameters
such as the number of incoming/outgoing threads and FD transport mode.
Since these need to be set before the connection is initiated, it is
necessary to split the existing wrappers into creating the RpcSession
object and calling the methods that initiate the connection.

To this end, follow the same structure as C/Rust wrappers for RpcServer.
An opaque handle is passed to the caller and the refcount of the
underlying C++ object is kept incremented until the caller frees its
handle.

Bug: 245727626
Test: builds
Change-Id: I384eb53ea881a2831569c5f4de8c0d5aa724f254
diff --git a/libs/binder/rust/rpcbinder/Android.bp b/libs/binder/rust/rpcbinder/Android.bp
index f70ebfc..afb73e9 100644
--- a/libs/binder/rust/rpcbinder/Android.bp
+++ b/libs/binder/rust/rpcbinder/Android.bp
@@ -68,10 +68,13 @@
     visibility: [":__subpackages__"],
     source_stem: "bindings",
     bindgen_flags: [
+        "--size_t-is-usize",
         "--blocklist-type",
         "AIBinder",
         "--raw-line",
         "use binder_ndk_sys::AIBinder;",
+        "--rustified-enum",
+        "ARpcSession_FileDescriptorTransportMode",
     ],
     rustlibs: [
         "libbinder_ndk_sys",