Optimize tokenizer

Let's start with eye candy :smiley_cat: 

```
[13:54:18] Running suite Bootstrap [/root/postcss/benchmark/general.js]...
[13:54:24]    Rework x 23.56 ops/sec ±2.23% (43 runs sampled)
[13:54:29]    PostCSS x 76.61 ops/sec ±1.58% (82 runs sampled)
[13:54:35]    CSSOM x 52.48 ops/sec ±0.25% (70 runs sampled)
[13:54:40]    Mensch x 30.20 ops/sec ±1.32% (55 runs sampled)
[13:54:47]    Gonzales x 6.85 ops/sec ±2.23% (22 runs sampled)
[13:54:53]    Gonzales PE x 6.06 ops/sec ±1.10% (21 runs sampled)
[13:55:00]    Stylecow x 6.82 ops/sec ±4.55% (22 runs sampled)
[13:55:00] Fastest test is PostCSS at 1.46x faster than CSSOM

PostCSS:     13 ms  
CSSOM:       19 ms  (1.5 times slower)
Mensch:      33 ms  (2.5 times slower)
Rework:      42 ms  (3.3 times slower)
Gonzales:    146 ms (11.2 times slower)
Stylecow:    147 ms (11.2 times slower)
Gonzales PE: 165 ms (12.6 times slower)
```

Back to the real world. There are few things to finish before merging.

This is a very-very dirty version of tokenizer, so we need to clean it up.
And restore support for safe error handling and change parser to use new location info from tokens (@ai knows what I'm talking about) :8ball: 

It can be tuned a bit more if a need arises.