Add ability to query task queue length for a given thread key (third pull request)

This would solve #69....(sorry for so many requests, it's late and I am not being careful enough)

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.

p.s. I know I still need to add unit tests for this, but I wanted to make sure your happy with the implementation first.  If you are, I will write the unit tests before merging to master (but you can go ahead and merge this pull request, as it is going into unstable_staging anyways).