Wire getDefinitionAtPosition using the new compiler implementation

There are some changes in behavior between old and new implementation, namely:
* module definition used to start at the module name, now it starts the module keyword, which is uniform with other constructs
* Goto def on function call used to take you to the matching signature instead of the definition, now it is always the definition
* new implementation support goto def on labels
* new implementation support goto def on string property names (e.g. a["prop"])
* new implementation support goto def on /// references
We should still cross function boundaries.  The compiler already binds them in this manner (and then reports you have an error if it crossed a boundary).  This way, one can still do goto-def (esp. after getting that error).