update_engine: added partition name manipulation library methods

Added utility methods to split and merge partition device names
to help "semi-intelligently" break down full partition device
name into disk name and partition name and merge them back.

With special handling for MMC devices and similar.

Also removed inconsistent naming for the disk and partition
device names (such as "boot device", "root device", etc).
Now device names such as "/dev/sda" are referred to as
"disk name" and "/dev/sda1" as "partition name").

BUG=None
TEST=Updated and ran unit tests

Change-Id: Ica41b8c99f0120799be326af0b41324639c5cf6a
Reviewed-on: https://chromium-review.googlesource.com/187453
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Don Garrett <dgarrett@chromium.org>
diff --git a/hardware.cc b/hardware.cc
index 26435cf..9f3fe00 100644
--- a/hardware.cc
+++ b/hardware.cc
@@ -59,12 +59,14 @@
   CgptAddParams params;
   memset(&params, '\0', sizeof(params));
 
-  string root_dev = utils::RootDevice(kernel_device);
-  string partition_number_str = utils::PartitionNumber(kernel_device);
-  uint32_t partition_number = atoi(partition_number_str.c_str());
+  std::string disk_name;
+  int partition_num = 0;
 
-  params.drive_name = const_cast<char *>(root_dev.c_str());
-  params.partition = partition_number;
+  if (!utils::SplitPartitionName(kernel_device, &disk_name, &partition_num))
+    return false;
+
+  params.drive_name = const_cast<char *>(disk_name.c_str());
+  params.partition = partition_num;
 
   int retval = CgptGetPartitionDetails(&params);
   if (retval != CGPT_OK)
@@ -82,15 +84,17 @@
     return false;
   }
 
-  string root_dev = utils::RootDevice(kernel_device);
-  string partition_number_str = utils::PartitionNumber(kernel_device);
-  uint32_t partition_number = atoi(partition_number_str.c_str());
+  std::string disk_name;
+  int partition_num = 0;
+
+  if (!utils::SplitPartitionName(kernel_device, &disk_name, &partition_num))
+    return false;
 
   CgptAddParams params;
   memset(&params, 0, sizeof(params));
 
-  params.drive_name = const_cast<char *>(root_dev.c_str());
-  params.partition = partition_number;
+  params.drive_name = const_cast<char *>(disk_name.c_str());
+  params.partition = partition_num;
 
   params.successful = false;
   params.set_successful = true;