Have serial tasks directly execute the function for qthreads

Previously, serial task creation spawned a new task, and the original task
would wait for that task to complete. We believe the original motivation for
this is from the days when qthreads had a lower stack size. If you have
recursive serial tasks being created you're going to run out of stack pretty
quickly.

This was changed with the qthreads commit 82a0224513ec

With our current default stack size of 8MB you end up wasting a lot of memory
because you're creating a task for each serialized task. For schedulers that
have more than one worker per shepeherd you can also schedule the serial task
on a different core, which can cause you to lose some cache and can result in
slowdown because many qthreads are constantly yielding waiting for one to
finish.
Merge pull request #733 from ronawho/qthreads-serialized-task-creation

Have serial tasks directly execute the function for qthreads

[reviewed by @gbtitus]

Previously, serial task creation spawned a new task, and the original task
would wait for that task to complete. We believe the original motivation for
this is from the days when qthreads had a lower stack size. If you have
recursive serial tasks being created you're going to run out of stack pretty
quickly.

This was changed with the qthreads commit 82a0224513ec

With our current default stack size of 8MB you end up wasting a lot of memory
because you're creating a task for each serialized task. For schedulers that
have more than one worker per shepeherd you can also schedule the serial task
on a different core, which can cause you to lose some cache and can result in
slowdown because many qthreads are constantly yielding waiting for one to
finish.