Implemented Single threaded Dispatcher,wrote test cases

I've implemented single thread dispatcher. If this is correct then I'll update it to concurrent version which I've started. I just wanted to confirm my approach.
It is a good practice to throw the system defined ArgumentNullException in this case instead of creating your own one. Custom exceptions are used to indicate errors that are unique to your application code. Null reference is pretty much independent of any application type and can occur across any application. Not a good candidate for a custom exception.