Separate DynamoCore into DynamoCore and DynamoCoreWpf

### The problem

Because Dynamo's Views, ViewModels, and Models all live in the same assembly, it's difficult to enforce separation of application layers in DynamoCore.  This pull request initiates an effort to separate the two into separate assemblies: DynamoCore and DynamoCoreUI.  

### The philosophy of the fix

*Models live in DynamoCore. ViewModels and Views live in DynamoCoreWpf*

It's as simple as that.  DynamoCoreWpf really represents the "WPF version" of Dynamo.  To initialize a "headless" Dynamo, you should only need symbols defined in DynamoCore.  

### Why make the separation?

1.  This separation makes "Dynamo as a Service", "Dynamo on the Mac" possible.  Otherwise, they are impractical or impossible.
2.   The Model layer should be distinct from the ViewModel and View layers.  This separation responsibilities makes the application easier to test and easier to maintain.  This means a better app.

### Why now?

The `NodeModel` API is becoming increasingly public - yet is is fundamentally flawed due to its inclusion of Wpf.  If there are mistakes in it, they will be baked into it forever.  NodeModel implementors will complain when it changes.  If we make the change now, there won't be complaints later.  

### Work completed

The "KillDynSettings" project did a lot of the grunt work to make this possible.

In this PR, I created the DynamoCoreWpf  project and moved all of the ViewModels and Views into this project.  I moved all `IWpfNode`'s into DynamoCoreWpf , as well.  

I fixed some mistakes in the design of `NodeCollapser`, `PackageDownloadHandle`, `PackageSearchElement` - removing any direct references to the ViewModel layer.

### Further work

There is a design to remove `SetupCustomUIElements` from NodeModel - `INodeCustomization`.  It needs to be applied to all nodes in Dynamo.

### Reviewers 

@lukechurch

Are these cross-platform?