[Mojo Video Capture] Split interface BuildableVideoCaptureDevice into “device launcher” and “launched device”

This is a cleanup/simplification CL.
This CL is supposed to be a pure refactoring. There should be no changes to
existing behavior.

Changes in this CL:
* Split interface BuildableVideoCaptureDevice into interfaces
  VideoCaptureDeviceLauncher and LaunchedVideoCaptureDevice.
* Split implementations accordingly.
* VideoCaptureController is freed from knowledge of
  VideoFrameConsumerFeedbackObserver and VideoCaptureDeviceLauncher::Callbacks.
* Moved mock implementations to a separate file, since they are used by more
  than one test.

This CL is part of the Mojo Video Capture work. For the bigger picture,
see [1] CL21.

BUG=584797, 711754
TEST=
  capture_unittests --gtest_filter="*Video*"
  content_browsertests --gtest_filter="VideoCaptureBrowserTest.*"

[1] https://docs.google.com/a/chromium.org/document/d/1Qw7rw1AJy0QHXjha36jZNiEuxsxWslJ_X-zpOhijvI8/edit?usp=sharing

Review-Url: https://codereview.chromium.org/2803483003
Cr-Commit-Position: refs/heads/master@{#464935}
20 files changed