:racehorse: Cache scanners with anchors

Previously scanners weren't cached if they contained a pattern with \G, \A, or
\z in it. Now a Scanner manages a pool of OnigScanner objects that are
individually created as needed based on the position being scanned and reused
once created.

This reduces the benchmark time by ~50% since the JavaScript grammar contains
\G patterns.
Remove unused variable