Contentstore streaming range

Currently, users can only download ContentStore files from first byte to last byte.

With this change, when a request to the ContentStore includes the HTTP "Range" parameter, it is parsed and StaticContentStream will stream the requested bytes.

This change makes possible to stream video files (.mp4 especially) from the ContentStore. Users can now seek a specific time in the video without loading all the file.

This is useful for courses with a limited number of students that doesn't require a dedicated video server.


Testing : Upload a .mp4 in Files & Uploads, add a Video XBlock in a Unit. You can now load the end of the video without loading everything. I tested it on Chrome and Firefox for mp4 videos.
A comment in the part about caching says that the previous person didn't know how to stream files in the cache. So he decided to cache only files under 1MB and stream for larger files.

I didn't investigate the cache streaming, I just say in my piece of code that if the content is under 1MB, I use the old method.

The weird constant is the same than the one used for the cache.