Add ability to query task queue length for a given thread key

This would solve #69.

What I don't like about this:
* It increases code complexity
* It causes a ton more constructors (I even marked two as deprecated because it's so crazy, those will be removed in 2.0.0)

But....
This does offer a low performance cost if you don't care about queue stats.  I barely was able to detect anything performance loss in benchmarks.  I am guessing the performance loss that does exist is the fact that we use inheritance in the TaskQueueWorker, and so the VM has to decide which function to execute.

I am reasonably happy with this implementation, but want feedback from @lwahlmeier on his opinion.  This is definitely NOT a must have, but if we are going to have it, I think this is the way to go about it for now.  In either case I plan to close #69 after this, I have wasted enough time with this problem, lol.