Don't recreate RegExps each parse()

When profiling our application, we found that a lot of time was spent
recompiling the regexp used in this method. Since only 5 different
regexps are used, we can cache them easily and reuse them

Profiling results showing over 9% of CPU time spent in `new RegExp`:

```
[Bottom up (heavy) profile]:
...
  30012   18.0%  /usr/local/bin/node
...
   2780    9.3%    LazyCompile: *DoConstructRegExp native regexp.js:35
   2773   99.7%      LazyCompile: RegExpConstructor native regexp.js:86
   1829   66.0%        LazyCompile: *BigInteger.parse javascript-biginteger/biginteger.js:317
   1829  100.0%          LazyCompile: *BigInteger javascript-biginteger/biginteger.js:80
    813   44.5%            LazyCompile: *BigRational.gcd node-betable-rational/lib/bigrational.js:187
    348   19.0%            LazyCompile: *BigRational.toDecimal node-betable-rational/lib/bigrational.js:141
    227   12.4%            LazyCompile: BigInteger.multiply javascript-biginteger/biginteger.js:825
    169    9.2%            LazyCompile: ~Rational node-betable-framework/lib/rational.js:153
    108    5.9%            LazyCompile: *BigRational.toString node-betable-rational/lib/bigrational.js:132
     51    2.8%            LazyCompile: *BigRational.multiply node-betable-rational/lib/bigrational.js:80
    940   33.9%        LazyCompile: ~expandExponential javascript-biginteger/biginteger.js:322
    939   99.9%          LazyCompile: *BigInteger.parse javascript-biginteger/biginteger.js:317
    939  100.0%            LazyCompile: *BigInteger javascript-biginteger/biginteger.js:80
```