Change how restarts are implemented

No longer use call to start to restart async. Instead, pass
AbortAndRestart up to top web handler where we return a 549 and let app
engine handle the restart.
Merge branch 'master' into restart_v2
Add retry limit logic

Wire it up so that we use the built in app engine task retry limit. This
is set up in the to_task method such that a TaskRetryOptions object is
created and passed into the Task.

This also includes a few tweaks the the test stubs in how they handle
headers.
Convert TaskRetryOptions to task_retry_limit

Convert TaskRetryOptions to task_retry_limit so that it can be json
encoded and propagated onto the next dict.
Removing debug logging
Move retry_options to to_dict

Move retry_options to retry_task_limit code into encode_async_options
instead of in to_task.

Don't name AbortAndRestart exception, just raise it.
Only encode TaskRetryOptions in to_task

Ensure that we only create and populate a TaskRetryOptions right before
we create the Task object.

Add tests to cover more cases.
Move logging to run_job from webapp
Add further testcases around task_retry_limit
Merge pull request #91 from tannermiller-wf/restart_v2

Change how restarts are implemented