implements simultaneous segment scheduling
Merge branch 'multilevel-buffer' of  https://github.com/dsparacio/dash.js/
fixes initial start time and timestampOffset calculations
removes module support code from Q.js and updates dash.all/min.js
fixes settting videoElement.currentTime before the metadata has been loaded
fixes jshint errors
fixes media end detection for mpds with non-integer duration value
improves player shutdown
return index for end when the time is beyond the last segment

This makes isMediaFinished work for streams that allow video.currenttime
to go beyond the last segment's t + d.
fix issues

1- BufferController was not detaching from the FragmentController
correctly
2- BufferExtentsions init method was never called. Further, the init
method was not a good fit given that representations switch.
Update WAMS urls to CDN
stops buffer controller after failing to load a segment for static mpds
Improve error handling and reporting
moves getPeriodStart into initializePlayback
fixes top quality detection for BufferExtensions.getRequiredBufferLength
more error handling improvements
fixes uninitialized 'self' variable
fixes seek behavior
improves parallel segment loading for high-latency mpds
fix errors found by JSHINT