Auto-completion as you type

Auto-complete now works as one types in codeblock node. While typing the auto-completion triggers to match what is being typed with 1. DS keywords supported in CBN, 2. All classes imported in the current Dynamo session, and 3. Built-in methods, and displays the completion window with the list of the above options that match with what is being typed.

![image](https://cloud.githubusercontent.com/assets/5710686/4692697/b6b37fba-5773-11e4-8b70-6798b81f7848.png)


In the case where there are class name collisions (the same class name occurring in multiple namespaces), the completion window prompts the user with all occurrences of the class with its fully qualified name. In the example below, `ReferencePoint` class in Revit occurs in 2 different namespaces so both occurrences are displayed with their fully qualified names. 

![image](https://cloud.githubusercontent.com/assets/5710686/4692624/140409cc-5770-11e4-8fc3-956742fc4406.png)

In this example, `FFITarget` test library has been loaded in the session. Since this library has a `Point` class, it clashes with `Autodesk.DesignScript.Geometry.Point` and therefore both options are made visible in the completion window. When the user selects one of the options, the fully qualified name is printed to the code block since only then can the execution engine properly resolve the class in order to execute the statement.
![image](https://cloud.githubusercontent.com/assets/5710686/4692627/2c882e10-5770-11e4-8642-7c6d19e20367.png)

Next Steps:
Completion on variable names for variables that are local to the code block node being typed.

@Benglin please review this last one. I'll follow this up with test cases.
Just a tiny tip, if the reason we have ```useFullyQualifiedName``` is to make the code more readable (as opposed to having just ```true``` on the function call), then you can also do this:

```cs
CodeBlockCompletionData.ConvertMirrorToCompletionData(x, this, useFullyQualifiedName: true);
```