Replace AsyncTasks with a Dispatcher

Removing the reliance on AsyncTask for a dispatcher model. This will
allow us to start a given number of dispatcher threads for running
requests. In addition, in a future update results will be able to be
posted to a thread other than the UI thread. Should be a bit quicker for
multiple requests being made at the same time.