[skcapture] add a capturing canvas to enable dynamic skia-wide canvas recordings

SkCapture hopes to collect all draws across an Skia application and compile them into a single file for debugging. The CaptureCanvas aims to be used in a recording model that periodically snaps off SKPs to be annotated and serialized later. The new canvas isolates a lot of the unique recording logic needed by this new capturing model.

The intended behavior is to have the Context (or Ganesh's equivalent), trigger the capture start, which the canvas will poll. Next steps are to implement said trigger and add tests.

Bug: b/412351769

Change-Id: Id8bf6be3f876f1217cb4597f26383ec1d38c6c18
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/983076
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Kaylee Lubick <kjlubick@google.com>
Commit-Queue: Jorge Betancourt <jmbetancourt@google.com>
7 files changed