Improve file download.

- Do not load file content into RAM, return a stream iterator instead.
- Handle range requests.
- Handle if modified since requests.
- Set content-length header.
Make download view use our index_html implementation.