Adds composer abstraction layer into EmuHwc

... to enable sharing hwcomposer implementations between
Cuttlefish and Goldfish.

Breaks the monolithic file into parts to allow including
Layer definition in base Composer class.

Moves most of the existing init(), validate(), and present()
logic into HostComposer.cpp.

Following this change, I will add a GuestComposer.cpp which
uses libyuv and (initially) uses vsock to send frames to the
host. After that, I would like to update GuestComposer.cpp to
use the drm flow as well.

Bug: b/171305898
Test: m && emulator
Test: cts -m CtsCameraTestCases
Test: cts -m CtsGraphicsTestCases
Test: vts -m VtsHalGraphicsComposerV2_1TargetTest
Test: vts -m VtsHalGraphicsComposerV2_2TargetTest
Change-Id: I0a64a58bf16ed610cb7be3de84153c01a59be258
15 files changed