Merge PDF.js work into master

This is the result of @ChrisKdon's work this term.

Closes #1439, #1110, #1108.