Add basic error handling for start on Async.

Switch the insert task logic in Async.start to match the context insert_tasks
function by handling some standard queue exceptions.
Add docstrings to the example/runner.py module.
Have Async.start retry on TransientError

When hitting a TransientError Async.start will now try to re-insert the task.

Also added tests for the error types.
Add module docstring to example/runner.py
Fix test comment for test_async
Merge pull request #29 from beaulyddon-wf/update_async_start

Add basic error handling for start on Async.
Merge pull request #30 from beaulyddon-wf/update_async_start

Fix test comment for test_async
Merge branch 'master' into add_example_runner

* master:
  Fix test comment for test_async
  Have Async.start retry on TransientError
  Add basic error handling for start on Async.
  Fixed typos in the comments and the Exception. Also fixed if condition to check registry
  Remove get_messages call as the MessageIterator does what's needed.
  removing further reference to _executing_async in get_current_context
  Add MessageIterator for pulling work off a pull queue.
  Adding get_current_context() method
Merge pull request #28 from beaulyddon-wf/add_example_runner

Add an example runner for easily running the examples
Merge branch 'master' into add_batcher_example

* master:
  Fix test comment for test_async
  Add module docstring to example/runner.py
  Have Async.start retry on TransientError
  Add docstrings to the example/runner.py module.
  Add basic error handling for start on Async.

Conflicts:
	furious/async.py