Porting Chameleon package to chrome os devices

This primarily includes the following tasks:
- Deploy a chameleond config file as an upstart service.
  Do not use update-rc.d on chrome os devices.
- Detect if the machine is already in USB host mode.
  No need to enable USB OTG driver in that case.
- In the fpga_tio driver, the instantiation of various devices is
  performed in a lazy manner according to the platform, chromeos
  or fpga.
- The memory singletons are instantiated in a lazy manner too.
  Otherwise, the system may crash due to the incompatibility of
  different platforms.

BUG=chromium:859796
TEST=Perform the following steps.

Install "make" on the chrome os device as "make" is required to
setup the package on the device.
(cr) $ emerge-${BOARD} make
     where ${BOARD} represents the chromeos board replacing
     chameleon board.
(cr) $ cros deploy "$CHROMEOS_IP" make
     where ${CHROMEOS_IP} represents the IP address of the
     chrome os device replacing chameleon board.

Next step is to make a tarball of the chameleon package and
install it on the chrome os device. This will install a few more
packages at the first time, including setuptools, pip, and wheel.
(cr) $ make
(cr) $ make remote-install CHAMELEON_HOST="$CHROMEOS_IP"

Run a bluetooth test to verify that the package is installed properly.
Remember to insert an RN42 kit to the chrome os device.
(cr) test_that --autotest_dir ~/trunk/src/third_party/autotest/files/
     --args "chameleon_host=${CHROMEOS_IP}" "${DUT_IP}"
     bluetooth_AdapterPairing.mouse
where DUT_IP is the chromebook under test.

Also verify that the patch works well on a chameleon board.

Change-Id: Ia5dd9aecf02be1bb2aefe4135311f19e04d86057
Reviewed-on: https://chromium-review.googlesource.com/1125650
Commit-Ready: Shyh-In Hwang <josephsih@chromium.org>
Tested-by: Shyh-In Hwang <josephsih@chromium.org>
Reviewed-by: Wai-Hong Tam <waihong@google.com>
8 files changed