storage: createReadStream: accept start/end offsets

RE: #318 

This adds `options.start` and `options.end` to `file.createReadStream`, using the `Range` HTTP header when calling the API.

// @janesconference for a review, since it was all his idea :bulb: :+1:
Perhaps put a more realistic example file e.g. tailing a log file... an arbitrary byte range from a png sounds like a very esoteric example.