[Cast] Refactor ExternalVideoEncoder for cleaner/simpler encapsulation.
There was a lot of hopping around between two classes, each class having
code that executes on two threads. This change makes
ExternalVideoEncoder live entirely on the cast MAIN thread, and the VEA
client live entirely on the VEA's own thread. This greatly simplified
the code and improved readability (especially the create/init sequence).
Also added a new FakeVideoEncodeAcceleratorFactory class to provide
common functionality for multiple unit test modules. In a soon-upcoming
change, the video_sender_unittest.cc code will start using it.
BUG=325998, 451277
Review URL: https://codereview.chromium.org/
868803007
Cr-Commit-Position: refs/heads/master@{#313852}