Adding dispatch decorator that simplifies common dispatch patterns

This decorator is meant to eliminate some of the boilerplate associated with effectively using executors and work schedulers [like here](https://github.com/enthought/chaco/blob/master/examples/demo/advanced/asynchronous_updates.py#L63). The decorator also handles dispatch with callables (e.g. `ui_dispatch`, `deferred_call`).

Feedback on the functionality and API is much appreciated (@sjagoe, @mdickinson, @prabhuramachandran). If this is determined to be merge-worthy, I'll write up some documentation and examples.