use separate video elements for each subtest

so that other subtests are not affected when each modifies the video element.
use step_func and step_func_done to simplify some tests
expect sourceended after MediaSource.endOfStream() instead of sourceclose

http://www.w3.org/TR/media-source/#mediasource-events
http://www.w3.org/TR/media-source/#idl-def-ReadyState
wrap assert_throws() call in appropriate subtest step