Call endOfStream after the last segment has been buffered.

When the last segment in a playlist is appended, call `SourceBuffer.endOfStream()`. Fixes #111. Avoid using 1.10.3 of sinon.js. Make sure hitting play when a video ends restarts playback.
I certainly could be wrong on this, but I thought end of stream calls executed when the final buffer data was emptied, not necessarily when it was loaded. If I've read this correctly the for example if the stream were paused immediately prior to actually ending [i.e. empty buffer], but were in the final media index; then this would fire yet the stream itself would not have finished.

Another issue I could potentially see with this implementation is plugins that are triggered on 'ended' firing before the stream playback has finished. End caps, related content screens, analytics, etc.