Lanugage Service support for union types

Completions kind, Quick Info, go to def, and find all refss
This one is different. Consider this example:
```
interface A { a; }
interface B { b; }

var v : A|B = { a: 0, b: 0 };
```
We are going around the type System here. we are asking does this type (A|B) has a property "a". The answer is no, which is correct. but we want to go one step further, and say you probably meant the "b" in "B" since you have a contextual type "A|B" so to do that we need to ask all types of the union type if they have that property.