Bug 1090991 - Modify MediaData::Type so that it may serve as a general-purpose enum for distinguishing audio and video. r=cpearce

We don't seem to have something like this already, and this seemed better than
introducing yet another new enum.
Bug 1090991 - Refactor RequestSampleCallback to use a single callback for all "not decoded" message. 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. 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. r=cpearce,r=cajbir