It's possible for multiple calls to AwaitVSync to be pending while reloading
an application. The Animator may get an AwaitVSync, a Reset, and then another
AwaitVSync before the first vsync completes.
If this happens, invoke both callbacks. If we close the pipe, then the
Animator will no longer make progress.
Now we actually use the vsync signal to trigger work. Previously, we'd hit the
pipeline depth limit too early and fall back to swap buffers-triggered
rendering.
Also, rename Vsync to VSync on recommendation from jamesr.
Instead of using back pressure from swap buffers to drive the engine, this
patch using the vsync signal from the Android framework. We still respect
back pressure from swap buffers if we get too far ahead.