Add SwapPromise support to LayerTreeHost and LayerTreeImpl

When a change to the compositor's state/invalidation/whatever happens, a                                                                                                                                
Swap Promise can be inserted into LayerTreeHost/LayerTreeImpl, to track                                                                                                                                 
whether the compositor's reply to the new state/invaliadtion/whatever is                                                                                                                                
completed in the compositor, i.e. the compositor knows it has been sent                                                                                                                                 
to its output or not.                                                                                                                                                                                   
                                                                                                                                                                                                         
If the new compositor state is sent to the output, SwapPromise::DidSwap()                                                                                                                               
will be called, and if the compositor fails to send its new state to the                                                                                                                                
output, e.g. commit fails on main thread, new frame data has no actual
damage so LayerTreeHostImpl::SwapBuffers() bails out early, then
Promise::DidNotSwap() will be called.

BUG=246034, 271583
TEST=unittests pass.

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237444 0039d316-1c4b-4281-b951-d872f2087c98
Removing QUIC_VERSION_11.

Merge internal change: 57143172

R=rch@chromium.org

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@237445 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 237444
SVN changes up to revision 237445