DNM: Search DynamoCoreModularization First Steps

@lukechurch @ikeough This is just a small taste and I still have 110 compiler errors in DynamoCore...

I will break this into smaller, digestable pieces.  

Here's the order I plan to do it
### Predecessors that are easy to inspect

1.  New files:  ImmutableStack.cs, Option.cs, ICustomNodeSource.cs, ISource.cs, Annotations.cs
2. Additions to TypeExtensions.cs
3. Superfluous whitespace changes:  AsyncTask.cs, DelegateBasedAsyncTask.cs, 
4.  Name refactors: CustomNodeInfo.Guid -> FunctionId, CustomNodeDefinition.Name -> FunctionName

### Big changes

1.  NodeModel refactor to remove WorkspaceModel from constructor (this will need to predate Loader changes as well, I'd guess)
2.  Big change to SearchModel, including updates to tests, View layer, Tests