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
This class isn't needed, @marimano. The whole idea of ```AsyncTask``` and scheduler is to synchronize actions going into the VM/geometry libraries. For this case, we just want to notify the client of evaluation completion, you can directly call ```OnEvaluationCompleted```, remove ```OnFullRunCompleted``` and let ```MessageHandler.RunCommandCompleted``` subscribe to ```dynamoModel.EvaluationCompleted```.

We just need to find other ways of representing ```FullRunCompletedEventArgs.WasRun``` property. I believe we should tweak the expectations (i.e. the design) around having the NWK knows about whether the run was completed or not (in ```RunExpression```). Do we really need ```FullRunCompletedEventArgs``` if the run was not successful? I think it is related to setting/resetting ```nextRunAllowed``` events, right? If that's the case then we should rethink about that (i.e. how to wait for evaluation to complete before calling ```ExecuteCommand``` on the next ```RecordableCommand```).

I will see if I can bring something on the table (maybe the support to ```hold``` the ```RunCancelCommand``` should be added to the command framework). More on this later :)