Avoid unnecessary array allocations in EvaluatorPreprocessor_read().

EvaluatorPreprocessor_read() is called in two cases. For the normal
layer, the args array it produces is used beyond the bounds of the loop
in which EvaluatorPreprocessor_read() is called.

But for the text layer, the args array is used in a very short-term
fashion. This change reworks things so that a single array is repeatedly
used for the text layer. This reduces total JS allocations for the
Spoorkaart map by 11%, and has similar effects on many other PDFs.
Fix the error handling for CMaps that fail to load
implement CalRGB color space

Both whitespace and blackspace support are implemented.
Use cff glyph width in the hmtx table
Optimizes defaults for svg.js
Merge pull request #5184 from yurydelendik/cff-width

Use cff glyph width in the hmtx table
Reduce ASCII checks in makeInlineImage().

makeInlineImage() has a "are the next five chars ASCII?" check which is
run after an "EI" sequence has been found. This check involves the
creation of a new object because peekBytes() calls subarray().

Unfortunately, the check is currently run on whitespace chars even when
an "EI" sequence has not yet been found, i.e. when it's not needed. For
the PDF in #2618, there are over 820,000 such checks.

This change reworks the relevant loop so that the check is only done
once an "EI" sequence has been seen. This reduces the number of checks
to 157,000, and speeds up rendering by somewhere between 2% and 7% (the
measurements are noisy).
Right-size the array in getSampleArray().

This allows the JS engine to do a better job of allocating the right
number of elements for the array, avoiding some resizings. For the PDF
in #2504, this avoids 100s of MiBs of allocations in Firefox.
Ignore setGState no-ops.

For the document in #2504, 11% of the ops are `setGState` with a
`gStateObj` that is an empty array, which is a no-op. This is possible
because we ignore various setGState keys (OP, OPM, BG, etc).

This change prevents these ops from being inserted into the operator
list.
Merge pull request #5191 from nnethercote/getSampleArray-array-length

Right-size the array in getSampleArray().
Merge pull request #5168 from nnethercote/EvaluatorPreprocessor_read

Avoid unnecessary array allocations in EvaluatorPreprocessor_read().
Merge pull request #5187 from nnethercote/EI-checking

Reduce ASCII checks in makeInlineImage().
Merge pull request #5186 from Snuffleupagus/fix-CMap-unavailable-error-handling

Fix the error handling for CMaps that fail to load
Merge pull request #5181 from timvandermeij/svg-optimizations

Optimizes defaults for svg.js
Remove `position: absolute` from text divs.

It's not necessary in each text div, because it's specified in the
`.textLayer > div` rule.
Merge pull request #5165 from kkujala/calrgb

implement CalRGB color space
Merge pull request #5192 from nnethercote/empty-setGState

Ignore setGState no-ops.
Add unit test for PDF file loaded as typed array
Merge pull request #5194 from nnethercote/no-absolute

Remove `position: absolute` from text divs.
Merge pull request #5195 from Snuffleupagus/typed-array-api-unittest

Add unit test for PDF file loaded as typed array