Implemented new scheduler thread classes

Background
-----
This pull request mainly implements two new scheduler threads as described in [the documentation](https://docs.google.com/a/adsk-oss.com/document/d/17xmcMexPLmASaGJ89hKXzDC4EFmdOa5Mtl2gTG6hQ04/edit). This is meant to be a continuation from [a previous pull request](https://github.com/DynamoDS/Dynamo/pull/2102).

1. ```DynamoSchedulerThread``` for standalone Dynamo
2. ```RevitSchedulerThread``` for Revit hosted Dynamo

Additional changes
-----
Less obvious is the way we added dependency on ```DynamoCore``` in ```RevitServices```, from the way things look that seems to be alright. I'd see what @ikeough has to say about it.

Hi @ke-yu, @Randy-Ma, @aparajit-pratap and @ikeough, please have a look at this, thanks! :)

![Image of the Octodex]
(https://octodex.github.com/images/droidtocat.png)
I validated this with @ikeough just now and it's desirable to keep the behavior as it is, we will only consider a change if this is proven to be an issue. However, the discussion did bring up few good points, for example when an ```UpdateGraphAsyncTask``` is executing, it is okay for this not to return to Revit (in fact it is desirable for it not to return to Revit) so that user has no way of deleting an element in Revit when VM is running (or when a task is done executing but before the next task starts).