update_engine: added CanRollback dbus method

Added a method to the update engine to check if a rollback
partition is available and can be booted from.
update_engine_client is also updated to call the function
when --can_rollback paramater is specified

BUG=chromium:343301
TEST=Ran "update_engine_client --can_rollback" and unit tests

Change-Id: If3fcb29a0067069a22812f60e9b67c6fdbbd18bd
Reviewed-on: https://chromium-review.googlesource.com/187157
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Don Garrett <dgarrett@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/hardware_interface.h b/hardware_interface.h
index 29baec4..58157d0 100644
--- a/hardware_interface.h
+++ b/hardware_interface.h
@@ -6,6 +6,7 @@
 #define CHROMEOS_PLATFORM_UPDATE_ENGINE_HARDWARE_INTERFACE_H__
 
 #include <string>
+#include <vector>
 
 namespace chromeos_update_engine {
 
@@ -23,6 +24,9 @@
   // Returns the currently booted rootfs partition. "/dev/sda3", for example.
   virtual const std::string BootDevice() = 0;
 
+  // Returns a list of all kernel partitions available (whether bootable or not)
+  virtual std::vector<std::string> GetKernelDevices() = 0;
+
   // Is the specified kernel partition currently bootable, based on GPT flags?
   // Returns success.
   virtual bool IsKernelBootable(const std::string& kernel_device,