This request fixes some defects related to undo

**Background**
```BasicInteractive``` class has been duplicated into the new DesignScript world, so recent fixes in the old ```BasicInteractive``` node need to be moved to the new node too. Along with this change, ```SerializeCore/DeserializeCore``` methods were also updated to more closely match ```SaveNode/LoadNode``` methods in the way they deal with ```XmlElement``` data (this is a groundwork for [future task](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-2154) when we merge ```SaveNode/LoadNode``` with ```SerializeCore/DeserializeCore``` methods).

**Shortcomings**
While undo recording generally works with text editing on nodes themselves, actions like clicking on the ```True/False``` radio buttons do not get recorded for undo. This is [being listed as one](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-2153) of the clean-up tasks that are coming in the near future.

**Defect fixes**
This pull request fixes the following defects related to undo functionality:

[MAGN-1963](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-1963) Undo/Redo of Python node edit crashes Dynamo
[MAGN-2071](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-2071) Implement DeserializeCore/SerializeCore methods at DSCoreNodesUI.BasicInteractive level
[MAGN-2102](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-2102) Crash while undoing deleted node which was deprecated.
[MAGN-2137](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-2137) Undoing a deleted Code Block Node results in a crash