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 CMap unit tests

When the binary CMaps were added, some of the relevant unit tests were not changed. This patch updates them, so that we actually test the current implementation.
What's somewhat troubling here is that we currently have CMap unit tests that passes, *despite* not working as intended (the CMap files doesn't load).
Remove the remaining references to cidmaps.js from the test suite
Merge pull request #5185 from Snuffleupagus/fix-cmap-unittests

Fix CMap unit tests
Fix the error handling for CMaps that fail to load
Added svg export tool
Merge pull request #5182 from pramodhkp/svgcli1

SVG Command line tool for exporting output
Refactors SVG api
Adds svg.js to the generic and singlefile builds
Fixes image and font embedding
implement CalRGB color space

Both whitespace and blackspace support are implemented.
Merge pull request #5188 from yurydelendik/svg-refact

Refactors some SVG api and includes svg.js in the build
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().