Bug 1090991 - Refactor RequestSampleCallback to use a single callback for all "not decoded" message. v3 r=cpearce,r=cajbir

I'm going to add another one, and want this API to scale better than it does.
Bug 1090991 - Unify MediaDecoderStateMachine::On{DecodeError,AudioEOS,VideoEOS} and eliminate duplicated logic. v3 r=cpearce

We take this opportunity to align the behavior of Finish() calls between audio
and video EOS, invoking them unconditionally for both cases. Currently both
cases always call Finish() immediately, with the exception of:

(A) Video in seeking mode, where we may push mFirstVideoFrameAfterSeek before
    doing so, and
(B) Video in the |default:| case.

Push() and Finish() seem like orthogonal operations on MediaQueue, but we
nonetheless preserve the old order just in case. There doesn't seem to be a good
reason for (B).
Bug 1090991 - Introduce a new NotDecodedReason WAITING_FOR_DATA and use it for MSE. v3 r=cpearce,r=cajbir
Bug 1091008 - Factor out IsDataCachedToEndOfResource() into a higher-level question and answer it sensibly for MSE. v1 r=cpearce
Bug 1091008 - Teach MediaDecoderReader about its start time. v2 r=cpearce

Duplicating state is never great, but this lets the reader make calculations
using this immutable state variable without involving the state machine. We
could alternatively punch a hole from MediaDecoderReader to
MediaDecoderStateMachine and access it there, but that would create tighter
coupling, and weird relationships for MSE.
Bug 1091008 - Remove the aStartTime argument from MediaDecoderReader::GetBuffered. v1 r=cpearce

We now have this stashed on the superclass.
Bug 1091008 - Hoist stream pinning into the MediaDecoderReaders and make MediaDecoderStateMachine::GetBuffered just forward to them. v2 r=cpearce

Whether or not we ping a stream depends a lot on what kind of decoder we're
dealing with. In particular, it doesn't really make sense for MSE.
Bug 1091008 - Implement a sensible GetBuffered override for MediaSourceReader using the existing GetBuffered on MediaSource. v1 r=cajbir
Bug 1091008 - Remove special handling for MSE in HTMLMediaElement::Buffered. v1 r=cajbir

The same code will now be reached by invoking this method on the decoder.
Bug 1091008 - Reimplement HasLowUndecodedData in terms of GetBuffered. v3 r=cpearce

Since GetBuffered now has a sane implementation for MSE, this should
make this function sane for MSE as well.
Bug 1063323 - Tests. v5 r=cajbir