Pre-segment switching

This PR solves the following problem:

Say, we have a video with a low and a high bandwidth channel and the segments are 10 seconds long.
The current implementation will always play the first segment of the low bandwidth channel - no matter how great the network conditions are. This is because Hls.loadSegment() always starts with the lowest quality segment and then checks for the best playlist *after* playing a segment. Since mid-segment switching is not supported we always end up with 10 seconds of low bandwidth video material.

This PR solves this problem by checking for the best playlist *before* playing a segment (hence "pre-segment switching"). 


Returning here means the buffer won't be filled and the next call to `fillBuffer()` will trigger the segment to be downloaded again. If it takes awhile to fetch the new media playlist, it seems like this could end up eating a lot of bandwidth.