faft: Refactor setup_mode and restore_mode

The change moves and splits the original logic on setup_dev_mode and
restore_dev_mode to FAFTCheckers and ModeSwitcher. It is also enhanced
to support setting up all firmware modes, including recovery. They are
now methods in ModeSwitcher as they are highly related to mode
switching.

BUG=chrome-os-partner:39744
TEST=Switched DUT to normal mode and ran firmware_DevMode. Then
switched DUT to dev mode and run firmware_DevMode. Checked DUT
restored to the original mode state.

Change-Id: I16314d18b785da59473df3ef5e02f7fe8f2693b0
Reviewed-on: https://chromium-review.googlesource.com/268858
Reviewed-by: Yusuf Mohsinally <[email protected]>
Commit-Queue: Tom Tam <[email protected]>
Tested-by: Tom Tam <[email protected]>
diff --git a/server/site_tests/firmware_DevScreenTimeout/firmware_DevScreenTimeout.py b/server/site_tests/firmware_DevScreenTimeout/firmware_DevScreenTimeout.py
index 0997b53..5fc32f5 100644
--- a/server/site_tests/firmware_DevScreenTimeout/firmware_DevScreenTimeout.py
+++ b/server/site_tests/firmware_DevScreenTimeout/firmware_DevScreenTimeout.py
@@ -81,7 +81,7 @@
     def initialize(self, host, cmdline_args):
         super(firmware_DevScreenTimeout, self).initialize(host, cmdline_args)
         # This test is run on developer mode only.
-        self.setup_dev_mode(dev_mode=True)
+        self.switcher.setup_mode('dev')
         self.setup_usbkey(usbkey=False)
 
     def run_once(self):