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 was considering that also, but the existing implementation of ```Application_Idling``` method led me to believe that all the pending promises are exhausted before it even return to Revit. I don't mind doing as what you suggested, but I'm afraid of tampering with the original design intent. Perhaps @ikeough has anything to say about this?

```cs
private static void Application_Idling(object sender, IdlingEventArgs e)
{
    while (HasPendingPromises())
    {
        Action a;
        lock (PromisesAccessMutex)
        {
            a = Promises.Dequeue();
        }
        if (null != a)
            a();
    }
}
```