DynamoDS/Dynamo — pull request #3233 by ke-yu (2014-11-23 15:40:30+00:00)
Title: 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 three 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)
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)
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:
![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?

@ikeough, @Benglin , could you please help to review the change?

@riteshchandawar , @monikaprabhu , you may be interested in what have been done for custom node.

Thanks.