Some slight performance improvements for workers that only run one task (or one chain of tasks).
We now lazily create the ArrayDeque to avoid allocating it if we only have one task.  In addition after we are ready for the next queue, we will not proactively allocate the ArrayDeque, instead we will just leave it as null till as task is being added.