Refactor canvas code to centralize CanvasResourceProvider ownership

With this change, CanvasResourceProvider is always owned
by CanvasResourceHost, except for a a few special case that use
ephemeral resource providers.  This is a step towards unifying
canvas and OffscreenCanvas presentation code paths.

BUG=788439
TBR=fserb@chromium.org, zmo@chromium.org
NOTRY=true

Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_layout_tests_slimming_paint_v2;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: Id9bdbb2c3e93b264f67946b887419b47599df65d
Reviewed-on: https://chromium-review.googlesource.com/1134182
Commit-Queue: Justin Novosad <junov@chromium.org>
Reviewed-by: Justin Novosad <junov@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574614}
26 files changed