LS: include tokens in tree during parsing 

Currently parser drops lots of token information on the floor which is fine for batch compilation. However language service still needs this data so to reconstruct it we now re-scan the source text. This PR contains proposal for implementation strategy to augment the parser with a few extensibility points so LS can plug in into the parsing process and embed token information into the tree during parsing.
now `parseAndCheckModifiers` already returns combination of flags derived from modifiers. I've considered returning modifiers as an option but then it looks quite inconsistent: normally we push tokens to hooks as we meet them in the text (so positions can be obtained from the scanner) but now we'll need to capture this information and then replay after actual declaration node is created