Support for promise API:

  * `Dispatchr.dispatch()` returns a promise if no callback is specified
  * `Dispatchr.waitFor()` returns a promise if no callback is specified
  * Store handlers that do not take a second parameter can return a Promise to fulfill at a later date. Handlers with no return value will be assumed to be fulfilled.