Node value query now goes through scheduler

Background
-----
Prior to this pull request, any call to ```NodeModel.CachedValue``` property will result in an immediate call to ```EngineController.GetMirror```. Since this call is typically originated from UI thread, it can potentially conflict with ```ISchedulerThread``` which runs in parallel to the UI thread.

This pull request enhances the way ```MirrorData``` is retrieved by going through ```QueryMirrorDataAsyncTask```, ensuring safe access to the underlying ```MirrorData```.

Changes
-----
1. ```NodeModel.RequestValueUpdateAsync``` method now schedules ```QueryMirrorDataAsyncTask``` to retrieve the ```MirrorData``` given the preview variable of a ```NodeModel```. This method is being called right after a prior ```UpdateGraphAsyncTask``` returns, ensuring a node's value is refreshed.

2. ```NodeModel.CachedValue``` no longer call ```EngineController.GetMirror``` and ```RuntimeMirror.GetData``` methods directly. It only returns its ```cachedMirrorData```.

3. ```NodeModel``` only invoke ```RaisePropertyChanged('IsUpdated')``` when its ```cachedMirrorData``` is actually updated (i.e. when ```QueryMirrorDataAsyncTask``` successfully returns with the ```MirrorData``` in it).


Testing scenarios
-----
The following are the areas which are directly or indirectly related to this change:

1. ```Watch Image``` node internally uses ```NodeModel.CachedValue``` to refresh its image after an update happens. Please verify that it continues to work and that subsequent update of any upstream nodes will trigger the right image display.

2. ```Watch``` and ```Watch 3D``` should be tested for their initial value preview, as well as subsequent value updates by modifying upstream nodes.

3. All geometry types (points, lines, surfaces and solids) are to be displayed properly in Dynamo. They are to be updated correctly in subsequent updates, too.

4. ```View > Show Geometry in Revit``` should work properly on Revit Sundial release.

5. Preview bubbles should be updated correctly when the node (or any of its upstream nodes) is modified. Hovering over a node for its preview bubble should show ```null``` if the underlying computation is still running. In this case, the preview bubble (if shown) should be correctly updated once the computation is done.

Unit tests
-----
Full test run is on-going, to be updated.

If you wonder where ```RaisePropertyChanged``` is, it has been moved into ```OnNodeValueQueried```. That is the time when ```cachedMirrorData``` is updated to its actual value, so raising the notification there makes more sense than it does here. Another issue with raising the event here is that whoever listens to ```PropertyChanged``` is likely to react immediately, but ```NodeModel.CachedValue``` may not be available yet.