added fullTypeCheckFlag to TypeChecker

LS now uses 2 instances of typechecker:
-  `typeInfoResolver` - created via `getTypeChecker(/*fullTypeCheck*/ false)` - used by quickinfo\dot completion etc..

- `fullTypeCheckChecker` - created via `getTypeChecker(/*fullTypeCheck*/ true)` - used to get semantic diagnostics.

`fullTypeCheck` parameter in the `getTypeChecker` controls if typechecker can shortcut and answer more quickly (producing less error messages but they are still ignored when `fullTypeCheck === true`)
i do not really care for the name that much. and this is used in only one place, so the extra layer of abstraction, is not really useful, i would just put it in getSemanticDiagnostics, to recreate if it does not exist and forget about it.