Make CMap.map quasi-private.

This makes it easier for the representation to be improved.
Optimize CMap.prototype.forEach().

This change avoids the element stringification caused by for..in for the
vast majority of CMaps.

When loading the PDF from issue #4580, this change reduces peak RSS from ~650
to ~600 MiB, and improves overall speed by ~20%, from 902 ms to 713 ms.  Other
CMap-heavy documents will also see improvements.
Add a couple of reduced test-cases for PR 4259

PR 4259 fixed a large number of font bugs, but none of those where added as test-cases. This was, in my opinion, unfortunate since it increases the risk of regressions in the future when other font bugs are fixed.
This PR simply adds a few more test-cases, to improve our test coverage somewhat.
Merge pull request #5105 from Snuffleupagus/pr-4259-tests

Add a couple of reduced test-cases for PR 4259
Use strict equalities in web/ui_utils.js
Use strict equalities in web/viewer.js
Use strict equalities in web/document_properties.js
Use strict equalities in test/driver.js
Use strict equalities in test/unit/{function_spec, stream_spec, testreporter}.js
Merge pull request #5101 from nnethercote/CMap-forEach

Avoid expensive for..in loops involving CMaps
Fix JBIG2 decoding issue #5026
Add strict equalities in src/shared/fonts_utils.js
Add strict equalities in src/shared/util.js
Add strict equalities in src/display/api.js
Add strict equalities in src/display/canvas.js
Add strict equalities in src/display/metadata.js
Add strict equalities in src/display/pattern_helper.js
Add strict equalities in src/display/svg.js
Merge pull request #5109 from timvandermeij/strict-equalities-test

Use strict equalities in test/*
Merge pull request #5110 from fkaelberer/issue5026

Fix JBIG2 decoding issue #5026