Fix issue that converting nodes to custom node doesn't delete original node

This pull request is a partial fix for issue [MAGN-5128 GC: Turning nodes into custom node doesn't dispose objects created by nodes](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5128)

The problem is both in language engine and in Dynamo core. Language engine issue is tracked by defect [http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5353](http://adsk-oss.myjetbrains.com/youtrack/issue/MAGN-5353)

For Dynamo core, the issues are
  1. When converting nodes to custom node, these nodes are not deleted from home work space, but just simply are added to custom work space, therefore engine controller is not notified by ``NodeDeleted`` event, it won't generate sync data for these deleted nodes, and consequentially all geometries associated with these nodes won't be created.
  2. As all selected nodes are reused in custom node, their Guids are not changed, therefore when they are compiled to AST node, all variables in the custom function literally are *global variables* instead of local variables in function scope. It may trigger update, and the result is unpredictable. 

What we need to do is to fire ``NodeDeleted`` event, and assign a new Guid to these nodes. 

Run DynamoCoreTests and DynamoCoreUITests to ensure no regression. 

@Benglin for you. 
For question 1, yes. And then graph sync data for deleted node will be put in ``graphSyncDataQueue``, so the following ``graphSyncDataQueue.Dequeue()`` will return that sync data, therefore the Vm will do cleanup work properly. 

For question 2, yes. The workflow is the same. If we don't update graph for deleted node, it will be accumulate and the graph will be updated until we add a node to empty canvas.