Add FakeDisplayDelegate for off device usage.

Add a NativeDisplayDelegate implementation that handles fake displays.
Fake displays mimic physical displays when running off device. Allow
user the specify initial display state with command line flag and
provide API to programatically change display state at runtime.

Except for changing the attached displays other NativeDisplayDelegate
functionality is a noop.

Add FakeDisplaySnapshot to store the fake display state. For now it's
very simple but I intend to add a builder to make it easy to construct
more complex displays.

Add FakeDisplayController interface and method on NativeDisplayDelegate
to get one. This interface will allow changing display state at runtime
if implemented. Only FakeDisplayDelegate will implement it for now.

Fake isn't the best term to describe "not real" displays but there are
already virtual displays implemented for casting.

BUG=611475

Review-Url: https://codereview.chromium.org/2324163002
Cr-Commit-Position: refs/heads/master@{#419505}
29 files changed