Bug 880094 - Provide a stable state for HTMLTrackElement asynchronous functions. r=cpearce

- Removed HTMLMediaElement::AsyncAwaitStableState and exposed a new method,
HTMLMediaElement::RunInStableState, that allows any nsIRunnable to run on
the app shell and take advantage of IsCancelled() code in an nsMediaEvent.
- HTMLTrackElement now uses this to call HTMLTrackElement::LoadResource.
- Changed test_texttrackcue.html to listen for MediaElement's "loadedmetadata"
to ensure that we wait until the cues are loaded before testing and set
preload=auto to get it to pass on Android.