Bug 1114840 - Make MediaDecoderStateMachine::Play run on the state machine thread. r=cpearce

We want to invoke StartDecoding() from Play, but that calls into a bunch of stuff
that asserts that we're on the state machine thread. It's not clear to me whether
that's actually necessary, but this seems like the right thing to do regardless
given that this is all supposed to be async anyway.
Bug 1114840 - Use StartDecoding() rather than SetState in PlayInternal. r=cpearce

This makes sure that decode tasks are dispatched and that all the preroll state
is appropriately set up.
Bug 1114840 - Hoist arms-length conditions and rename StartPlayback() to MaybeStartPlayback(). r=cpearce
Bug 1114840 - Dynamically compute preroll thresholds. r=cpearce

Currently, the preroll threshold ends up higher than the ample threshold in the
audio-only case where we slash the audio thresholds by a factor of 8. The best
way to avoid these sorts of bugs is to compute the values dynamically.
Bug 1114840 - Don't start playback during prerolling. r=cpearce
Bug 1116355 - Throw when setting SourceBuffer mode to 'sequence'. r=karlt