Save-upload functionality for NWK

It should be implemented in the different from browser version way. Flood in NWK should have the same kind of behavior that is in DynamoSandbox:
1) Open - Open a file from the local file system. Dynamo will need to know about the location on disk in order to support 2. 
2) Save - Save the current workspace to the local file system - this is only relevant in node-webkit mode. If the file already has a filename associated with the local file system, overwrite that file.
3) Save As.. - Prompt the user to provide a new filename to be saved to the local file system.

This PR contains changes from https://github.com/Benglin/Dynamo/pull/152. So https://github.com/Benglin/Dynamo/pull/152 should be merged first
Please tweak this code for better readability:

```cs
// Use 'System.Guid' instead of 'string' for comparison.
Guid guid = Guid.Parse((message as SaveFileMessage).Guid);

var defs = dynamoModel.CustomNodeManager.GetLoadedDefinitions();
var definition = .FirstOrDefault(d => d.FunctionId == guid);
if (definition == null)
    return;
    
workspaceToSave = definition.WorkspaceModel;
```