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:
Real use case: wav file, `<audio>` tag on the client side. Generally starts at 44 (after the header), end arbitrary, depending on client-side buffering.