Supporting classes for the new threading model

Background
-----
This pull request implements ```DynamoScheduler``` and ```AsyncTask``` classes that are required for the new threading model. The pull request does not represent a complete and working version of these classes, it is created in the interest of having multiple, smaller chunks of the larger redesign work.

The two new classes are not referenced anywhere in the existing code base.

Unit tests
-----
Few test cases are written to test ```TimeStampGenerator``` and ```AsyncTask``` classes. More test cases will be made possible with subsequent pull requests with ```DynamoScheduler``` and ```ISchedulerThread``` implemented more fully.

External references
-----

Documentation for the series of threading model redesign works [can be found here](https://docs.google.com/a/adsk-oss.com/document/d/17xmcMexPLmASaGJ89hKXzDC4EFmdOa5Mtl2gTG6hQ04/edit).


Hi @lukechurch and @ikeough, it seems like only two of you have seen the original document, perhaps these codes do not look too alien to you. Please have a look :)

![Image of the Ironcat]
(https://octodex.github.com/images/ironcat.jpg)
That's a valid question. Since we are using ```ManualResetEvent```, both waiting threads will be released. If it was ```AutoResetEvent```, then only one thread out of the two waiting threads will be released, because as soon as the first waiting thread is released, the event gets reset (to ```false```), causing the second waiting thread to continue to block. Now the other thing to this design is, this ```ProcessNextTask``` is meant to be called by the implementation of ```ISchedulerThread```, and there is only one instance of such scheduler thread, both in standalone and hosted (Revit) scenarios, so the scenarios of two waiting threads will not happen.