This adds support for holes within virtual surfaces. On platforms
that don't use virtual surfaces, this just works by destroying
the tile that is empty so it never gets composited.

Differential Revision: https://phabricator.services.mozilla.com/D59059

[ghsync] From https://hg.mozilla.org/mozilla-central/rev/e9d191b5eb8a78b117f55c0dd6993cb0d136c7c8