Scanner rewrite..

Ps.
This is still WIP, so it is not ready for merging yet.
I wouldn't mind some early feedback, or, god bless, I missed an obvious answer to the why.
Ds.

Here's another little refactoring.. :p 

I'll answer the three W's shortly here:

Why? - because I couldn't figure out how to extend the existing scanner with new top level tags, i.e. like how `{{` and `{%` work.. we need to support `{_` for instance.. (going from text..).

hoW? who? - by a tad rewrite.. by me.

Wtf!? - indeed.

I'll run some benchmarks to make sure it's on par with what we're used to. Although compile time isn't as critical as render time, at least for us..

More to come...