DispatcherUI calls Dispatcher::dispatch() on the main thread.

LocalDispatcher has a new executeInBackground plug and manages the background thread on its own. This is so we can do alter things before the asynchronous bit begins.

Note that while Dispatcher::postDispatchSignal() is still called after the dispatching itself finishes, it may now be called before the actual task execution finishes.

I know we had discussed offline having LocalDispatcher keep its background process alive to cut down on task execution time, but I'd rather leave that bit for now so we can get this into David's hands quicker.