parseString now uses a buffer to store the UTF8 code points and uses this to create the string as this is a fairly significant performance win.
Cleaned up the parseNumber section so that it is switch-based and reduces a lot of the error handling code.
Performance is now nearly identical: 0.19s vs. 0.18s on my MacBookPro under release settings... so close!!