Split Tokens into Tokens and TokensAnalyzer

Hi!

I am wondering about splitting `Tokens` class into 2 classys:
- Tokens - Simple collection of code tokens. It's role is to provide the ability to manage collection.
- TokensAnalyzer - analyzer of Tokens collection, to checks things like `isLambda` etc.

Some WIP in PR to show proof of concept.

What do you think ?
detectBlockType() would itself fit very well in Token, just like isWhiteSpace() and isComment() except it needs Tokens::getBlockEdgeDefinitions(), perhaps move both to Token?