Replace manual dm ioctls with libdm.

This mostly 1:1 replaces manual ioctls to device-mapper with calls to
libdm. There were two exceptions:

(1) There is a very old table-load-retry loop to workaround issues with
    umount (b/7220345). This loop has been preserved, however, it now
    includes DM_DEV_CREATE as well as DM_TABLE_LOAD.
(2) There was some ancient code to set DM_DEV_GEOMETRY for obb
    dm-devices. This never did anything since geometry must be set after
    loading a table. When setting it before (as vold was doing), the
    subsequent DM_TABLE_LOAD will clear it.

Bug: 132206403
Test: FBE device boots
      FBE device w/ metadata encryption boots
      FDE device boots
      atest StorageManagerIntegrationTest
Change-Id: Ib6db6b47329f093ac7084edaf604eddace8b9ac6
diff --git a/Android.bp b/Android.bp
index 1045dc2..03e9a3f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -30,6 +30,7 @@
     static_libs: [
         "libavb",
         "libbootloader_message",
+        "libdm",
         "libfec",
         "libfec_rs",
         "libfs_avb",