Use the lexer to do colorization more accurately

It turned out that without lexer we cannot extract the last part of long idents in all cases. 

So, I use the lexer for cases where extracted last ident is wider than `FSharpSymbol.DisplayName` (for optimization?)

Although it works OK, I'm not sure the resulting design is very good and efficient enough (I'll do profiling later today). 

Please, review.