Refactor CameraManager hierarchy to support new implementations

This relocates several components of the implementation class
AndroidCameraManagerImpl to higher levels in the inheritence hierarchy, where
they can be reused by other implementations of the CameraManager interface:
 - AndroidCameraManager.DispatchThread is moved into its own file
 - The core (history-tracking) pieces of CameraManager.CameraHandler are moved
   into their own HistoryHandler class, which the former is made to inherit
 - The constants defined in AndroidCameraManagerImpl for use in its nested
   CameraHandler class are moved into a separate class called CameraActions
 - AndroidCameraManagerImpl.CameraStateHolder is moved into its own file
 - Those CallbackForward classes that aren't tied to Android's Camera1 API are
   moved directly into the CameraManager interface

Change-Id: I5f3e1eb72039a0018ce2277e3ec6289bfa4ccec3
6 files changed