refactor src/core/pdf_manager.js: rename pdfModel to pdfDocument

Rename pdfModel to pdfDocument to let the name closer resemble what the
variable actually holds
Add a cache for glyphs.

This reduces memory consumption for text heavy documents. I tested five
documents and saw hit rates ranging from 97.4% to 99.8% (most of the misses are
due to |width| varying even when |fontChar| matches). On two of those documents
I saw improvements of 40 and 50 MiB.

The patch also introduces the Glyph constructor, and renames the |unicodeChars|
local variable as |unicode| for consistency with the corresponding Glyph
property.
Allocate fewer objects when parsing 2 and 4 byte chunks.

This is achieved by adding getBytes2() and getBytes4() to streams, and by
changing int16() and int32() to take multiple scalar args instead of an array
arg.
Avoid allocations in bidi().
Avoid more allocations in bidi().
Avoid allocations in executeCommand().
CMaps binary packing
Quick notes about the format
Prevent infinite loop in CFFParser_parseHeader
Merge pull request #4473 from Snuffleupagus/bug-866395-partial

Prevent infinite loop in CFFParser_parseHeader
Fixes HiDPI icons of the secondary toolbar for Chrome
Merge pull request #4477 from yurydelendik/chromehidpi

Fixes HiDPI icons of the secondary toolbar for Chrome
Merge pull request #4440 from bthorben/refactor/pdf_manager.js

refactor src/core/pdf_manager.js: rename pdfModel to pdfDocument
Removes external/cmaps; adds binary cmaps to the repo
Updates make.js for cmaps and make binary cmaps by default
Merge pull request #4470 from yurydelendik/packcmap

CMaps binary packing
Merge pull request #4447 from nnethercote/object-reduction

Allocate fewer objects
Fix some indenting within OperatorList.
Make fnArray always be a plain array.

This makes the code much simpler, and the extra memory use is tiny -- a vanilla
1000 element array is only 4000 bytes larger than a Uint32Array of the same
size.
Fix Issue #4461: Pages without \Resources in their dictionary fail to load

When no "\Resource" entry could be found return an empty dictionary