Tab Capture in VIZ: CopyOutputRequest/Result API changes.

Simplified creation of requests and sending of results to support the
effort to move tab/desktop capture into the VIZ component. The high-
level philosophy here is for clients to get exactly the result type they
ask for, matched to their use case. For example, one-off snapshots need
scaled SkBitmaps that are immediately ready for use, while layer
animations only need a texture reference to assign to an animated layer.
Furthermore, clients should not be burdened with having to deal with ALL
of the possible separate storage/access or ownership semantics that are
specific to whichever DirectRenderer happened to generate the results.

Summary of changes:

CopyOutputRequest: 1) Removed pre-C++11-style CreateXYZ() methods in
favor of a simple ctor. 2) Removed SendXYZ() methods in favor of a
single SendResult() method that works with the new polymorphic
CopyOutputResults. 3) Replaced CreateEmptyRequest() with
CreateStubForTesting(), since non-test code should never create empty
requests. 4) Add ResultFormat enum to allow clients to request exactly
what they should get, rather than be burdened with coding for all
possible result formats.

CopyOutputResult: Common accessor API, but each DirectRenderer impl that
executes copy requests can use their own subclass impl(s) to manage
their own special result storage/access and ownership semantics and
provide auto-format conversions where it makes sense.

Updated mojo IDL, struct traits, client code, and unit tests to match
the API changes.

Bug: 754872, 758057, 644851, 759310
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Ia309e261a92e05a475a35732ba6df3497366478d
Reviewed-on: https://chromium-review.googlesource.com/637003
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: David Reveman <reveman@chromium.org>
Reviewed-by: ccameron chromium <ccameron@chromium.org>
Reviewed-by: Alexandre Elias <aelias@chromium.org>
Reviewed-by: Fady Samuel <fsamuel@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Sergey Ulanov <sergeyu@chromium.org>
Reviewed-by: enne <enne@chromium.org>
Commit-Queue: Yuri Wiitala <miu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#500033}
61 files changed