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"). 


In theory this code can oscillate: low -> high, high -> low, low -> high etc.
If you guys agree with the solution I will add additional code to prevent oscillation.