Bug 1097823 - Move NotDecodedReason from RequestSampleCallback to MediaDecoderReader. r=cpearce
Bug 1097823 - Implement MediaTaskQueue::ForceDispatch. r=cpearce

This is necessary to have strong guarantees that promises will be resolved.
While we're flushing the task queue, normal dispatch starts to fail,
meaning that we can't dispatch promise resolution. We have 3 options to handle
this:

(A) Never respond to the promise.
(B) Invoke the Resolve/Reject callback synchronously if dispatch fails.
(C) Prevent dispatch from failing.

(C) seems like the option least likely to violate invariants if we can get away
with it. Promise resolution is unlikely to be a heavyweight task in the way that
a decode task might be, so this should hopefully be ok.

Note that this still doesn't help for bonafide task queue shutdown. It's up to
consumers to tear down their MediaPromiseHolders before the task queues are shut
down.
Bug 1097823 - Implement Media Promises. r=cpearce