Implement progressive loading of PDFs

This implements progressive loading of the PDF using an implementation similar to that described in #1108.

**Note:** This is still a work in progress, so it's incomplete and a bit messy. It is **NOT** ready to be merged.

Some of the things that still have to be done are:
- [x] Integrate w/ extension
- [x] For addon: fallback to fetching entire PDF if range requests are not supported
- [x] For viewer: fallback to fetching entire PDF if range requests are not supported
- [x] When there are no PDF chunks that are actively being requested, continue fetching PDF chunks sequentially
- [x] Fetching the current page first when the user changes pages
- [x] Optimization of parsing XRef tables/streams
- [x] Optimization of fetching of page tree
- [x] <del>Possibly more optimizations specifically for linearized PDFs</del>
- [x] Code cleanup
- [x] Unit tests, regression tests, etc...