Add method to enable adb root and related refactoring.

In retrospect, my previous commit to add 'device state management' type
methods to IDeviceManager was a bad idea because a) it bloats DeviceManager
with unrelated functionalities and b) recovery was not being called in these
methods (arguably where its needed the most)

In addition, IDeviceRecovery had a circular dependency with ITestDevice. The
original purpose of TestDevice was a "ddms IDevice + recovery mechanism".
A IDeviceRecovery implementation indiscriminately called ITestDevice methods
could lead to an infinite loop.

Thus, this commit makes the following changes:
 - move device state monitoring methods to a separate class/interface
 - move reboot/root/etc methods to TestDevice, and add recovery mechanism
 - change IDeviceRecovery to operate on a IDevice

Change-Id: I4bf826b4bf5f9028c1ce5e807201ccb4ba3448cd
17 files changed