* Break out playlist selector logic
Pull the basic playlist selector into a separate file so there's a shared place to build alternates.
* Create a moving-average playlist selector
Define a variant of the standard playlist selector that calculates a moving average of bandwidth and uses that to select a playlist.
* ts probe searches packets for first it can successfully parse
* Fixed an issue that could cause updateend events to fire more than once per append or remove under very specific conditions on firefox
* add playback watcher check for unknown player waiting
* do not do unknownwaiting check when the tech fires a native waiting event
* dont track current time waiting when at the end of the buffer
* call techWaiting_ when we detect a stall at the end of buffer
* first draft at fixing bandwidth tester and playing around with abr/bandwidth calculations
* More fixes and better per-millisecond resolution for simulation
* More fixes to allow reverting of non-network-simulation files back to their original content
* Added the ability to change bitrates and minor ABR settings
* Added a server that can simulate network conditions based on a network trace file
Added the ability to specify segment sizes for the simulator to simulate a specific video
Changed the simulator to use average bitrates for segment sizes if they are provided
* use specified mediasequence for VOD expired sync instead of assuming 0
* use synccontroller for expired
* target sync-point by index for expired instead of time 0
* minor fixes
* add vod test for expired
* If beforeRequest is set, reuse it on source changes
* Allow changing global xhr beforeRequest at runtime
* Always use latest beforeRequest instead of setting it when creating hls object
* blacklist the playlist that has stopped being updated
* pull out the playlistEnd calculation to a separate function, rewrite seekable and playlistEnd to reduce the amount of repeat code and add tests for playlistEnd
* handle the expired for VOD case, check for null on expired instead of checking the sync points and rename playlist update check function
* add event listener for playlist isn't a fresh update in playlist-loader
* never blacklist final available final rendition
* reset the loader state after error occurs to keep requesting the final rendition
* delay the requests for final rendition and get the segment loader start loading after errors