Introduce authfs_service

authfs_service serves as a privileged process in order to facilitate
authfs mounting (which is a privileged operation) for the client.

Once the service exists on microdroid, we will re-architect compsvc to
get the FD from authfs_service.

Code review hints:
 - authfs.rs is a modified copy from compos/src/authfs.rs. The original
   file should later be deleted as part of the re-architecturing.
 - The implementation intends to tie the lifecycle of an authfs
   instance/process/mount to the IAuthFs object, and clean up on the
   Rust object's drop.

Bug: 194717985
Test: 1. Start an fd_server with some files opened for read and write
      2. Start authfs_service
      3. Write a binder client with proper AuthFsConfig to get an
         IAuthFs from authfs_service. Let the client retrieves the FDs
         and copy from one remote FD to the other.
      4. Observe the file copy is correct.

Change-Id: Ia9979ee8d23f87bc33e2b670e135f63fee016426
diff --git a/authfs/service/Android.bp b/authfs/service/Android.bp
new file mode 100644
index 0000000..3f3a0c3
--- /dev/null
+++ b/authfs/service/Android.bp
@@ -0,0 +1,22 @@
+package {
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+rust_binary {
+    name: "authfs_service",
+    srcs: [
+        "src/main.rs",
+    ],
+    edition: "2018",
+    rustlibs: [
+        "authfs_aidl_interface-rust",
+        "libandroid_logger",
+        "libanyhow",
+        "libbinder_rs",
+        "liblibc",
+        "liblog_rust",
+        "libnix",
+        "libshared_child",
+    ],
+    prefer_rlib: true,
+}