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 ?
IMO, this is split is problematic - and here is one of case of why. Where does getBlockEdgeDefinitions sits best?

If TokensAnalyzer was meant to be that genera, then probably this dependency would be injected either in instantiation time or by copy in params. But because it is not really clear where it sits, the only way is making an static call.

Maybe this could be split into another static class to hold this info neutrally from both Tokens and TokensAnalyzer.