Renamed "dynScriptEditWindow" class/files to "ScriptEditWindow"
1. Made "DynamoViewModel.ExecuteCommand" method public (accessible from DynamoPython.dll)
2. Made "RecordableCommand" and all its derived classes public (accessible from DynamoPython.dll)
1. Refactored common ScriptEditWindow specific codes out of Python nodes
2. ScriptEditWindow now directly owns/manages the Auto-complete window
3. ScriptEditWindow updates Python nodes through UpdateModelValueCommand
Implemented SerializeCore/DeserializeCore methods for Python/PythonVarIn classes
Fixed duplicated port registration in PythonVarIn.SerializeCore/DeserializeCore methods
1. Added three new test cases to completely test undo/redo for Python nodes
2. Exposed Python/PythonVarIn.Script read-only property for verification in test cases
Merge pull request #738 from Benglin/PythonNodeRefactor

Fix: MAGN-566 Editing of python nodes cannot be undone/redone