Implementation of 2D canvas context lost/restored events

This change adds the APIs specified in the feature proposal found here:
http://wiki.whatwg.org/wiki/Canvas_Context_Loss_and_Restoration
The API changes are hidden behind the experimental canvas features flag.

This change does not implement any elective canvas evictions. Those will
be added in a future change. Only pre-existing context loss use cases
are handled, such as failure to allocate a backing store, and gpu
failures.

The strategy for recovering from a GPU context lost was modified
substantially in order to accomodate synchronization issues with the
context restored event. Context restoration is now attempted proactively
through a scheduled event. Prior to this change, restoration happened
lazily when trying to use the canvas.

BUG=322335
R=senorblanco@chromium.org

Review URL: https://codereview.chromium.org/211503006

git-svn-id: svn://svn.chromium.org/blink/trunk@170572 bbb929c8-8fbe-4397-9dbb-9b2b20218538