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)
In fact I was all set to use just ```true```, if ```ReSharper``` tells me off ;) But it turns out that ```ReSharper``` only asked for it to be converted to ```const```, and so I did. I used ```waitIfTaskQueueIsEmpty``` to make the function call intention that much clearer for whoever reads this code. Does that make sense?