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 ?
Exactly my initial concern, `detectBlockType()` would be a good fit in Token, but can live in the analyzer as well.

`getBlockEdgeDefinitions()` could live in the analyzer as well then perhaps as it is only used by `detectBlockType()`