Gotta go fast!
Gotta go fast!

Changes: the AST/SEXP matcher thing now caches parsed patterns in a
rather naive way. Patterns used in the translator are now frozen strings
(hopefully that allows fast hash retrieval)

Also, rewrote the top-level `each` in translator to not use the matcher
anymore but a more 'manual' approach that should be faster.

According to my very scientific and totally accurate performance
measurements, disabling the module cache in `spec/matchers.rb` yields a
compilation time, for 189 specs, of:

  - 29.06 seconds before pattern-caching
  - 23.91 seconds after pattern-caching

With the module cache, I used to see all specs pass in around ~3.5s and
now it's more along the lines of ~2.9s, which makes sense with the
measurements above. Note that the translator is just one of the many pieces
involved in compilation, so there's still a lot of room for improvement
imho.

fasterthanlime/shin,fasterthanlime/shin