Optofidelity: Refactoring and test coverage for detection module

This change introduces a clean interface into the detection module.
The interface is now defined by a VideoProcessor, a ScreenCalibration
as input information and Events as output information.

The detectors are no longer public, but can be enabled in the
VideoProcessor.EnableDetector method.

The overall structure is still the same, but a lot of things were
renamed. Comments with type annotations were added. Unit tests were
added.

Most importantly we have changed the naming of
TestArea -> ScreenCalibration and Frame -> CalibratedFrame.
To accurately describe the responsibilities of these classes. We are
now also referring to rectified images as 'screen space' and
unrectified images as 'camera space' which is an important distinction.

The ProcessorDebugger class was confusing and has been replaced with a
DetectorDebugger class, which is for internal use only and handles
visual debugging, i.e. drawing of debugging information. The user
of this module can pass in a list of debug flags to enable this
functionality.

BUG=chromium:463994
TEST=unit tests included

Change-Id: I84c88f550031615d17015dfbe9b357917fff319c
Reviewed-on: https://chromium-review.googlesource.com/262983
Reviewed-by: Dennis Kempin <denniskempin@chromium.org>
Commit-Queue: Dennis Kempin <denniskempin@chromium.org>
Tested-by: Dennis Kempin <denniskempin@chromium.org>
40 files changed