Be able to set the input parameter type for custom node

This pull request is to fix defect [MAGN 3740 Should be able to set the input parameter type for custom node](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-3740).

Following summarizes what have done in this pull request:
  1. For ``Input`` node, we replace its text control ``DynamoTextBox`` with ``ParameterEditorControl`` which support auto-completion (thanks @aparajit-pratap):
![1](https://cloud.githubusercontent.com/assets/2600379/5157995/3257d138-7368-11e4-991d-4e9c49b0f2ce.png)
``Input`` node accepts four kinds of input formats:
* ``parameter_name``
* ``parameter_name : type``
* ``parameter_name = default_value``
* ``parameter_name : type = default_value``
  2. It provides limited error handling
![8](https://cloud.githubusercontent.com/assets/2600379/5158000/8f9af262-7368-11e4-82bc-632071891c62.png)
"Limited error handling" means we just check the syntax but not semantics. For example, it won't give warning for input ``x : bool = 42``. 
  3. Support default value
![2](https://cloud.githubusercontent.com/assets/2600379/5158002/a4467948-7368-11e4-9005-0fc2de92354a.png)
![3](https://cloud.githubusercontent.com/assets/2600379/5158003/a6c6b750-7368-11e4-9689-6e7d408519df.png)
Four types are supported
* ``int``
* ``double``
* ``boolean``
* ``string``
  4. Support lacing
![4](https://cloud.githubusercontent.com/assets/2600379/5158007/d065f404-7368-11e4-88d2-ade68142a899.png)
  5. Infer input type automatically from ``DSFunction`` node and from ``Function`` node:
![5](https://cloud.githubusercontent.com/assets/2600379/5158009/e4838334-7368-11e4-92b3-6d50753eedf8.png)
![6](https://cloud.githubusercontent.com/assets/2600379/5158011/e72df092-7368-11e4-8536-e2b868f70b3f.png)
![7](https://cloud.githubusercontent.com/assets/2600379/5158013/e98d43ba-7368-11e4-8a48-aa7f6c46a261.png)

Some limitations and issues:
  1. For old custom nodes, their lacing strategy is always ``Disabled``. Shall we enable lacing for them? 
  2. Auto-completion control for ``Input`` node has some bugs, for example, when typing, no item is selected until pressing up/down arrow key. I'm trying to fix it...
  3. If custom node doesn't have any input, then lacing strategy should be disabled. 
  4. As ``Input`` node now has format requirement, it may break old file. For example, a test case tries to verify the nick name of a custom node input port is ``y = f(x)`` (this string is from ``Input``'s ``InputSymbol``). But now we may give a warning. Do we need a migration strategy?

Reviewers
- [ ] @ikeough 
- [ ] @Benglin
- [ ] @lukechurch  

@riteshchandawar , @monikaprabhu , you may be interested in what have been done for custom node. 

Thanks. 

What does it mean if node == null? What legimate circumstances can that occur in?