NodeCollapser fixes, new NodeModel creation methods on NodeFactory, WorkspaceModel

@Steell 
I think to be safe we should replace `[0]` with `.FirstOrDefault()`; if for whatever reason the `NIckNameAttribute` does not exist on the `NodeModel`, then the `FirstOrDefault()` call will return null, rather than throw an exception like `[0]` will.