Add builtin recursion disable hook

The subclass overriding one of the recursion method is not as reliable
as the parent Async class is always instantiated when the task is
deserialized. This way we can propagate the intention to disable
recursion through the Async options that gets passed around and we can
see how deep a specific recursion chain has gone on. This is potentially
useful for debugging.

The specific implementation is if you explicitly set max depth to -1
then it will ignore the depth check.
Readding test I accidentally deleted :)
Continue to fix that test I dropped
Rename RECURSION_DISABLE to DISABLE_RECURSION
Rename DISABLE_RECURSION to DISABLE_RECURSION_CHECK
Merge pull request #83 from tannermiller-wf/add_recursion_override

Add recursion override
Add restart_count

Add restart_count to options to track how much a task gets restarted and
if it goes past 10, then it will stop restarting.
use MAX_RESTARTS instead of int literal
Merge pull request #85 from tannermiller-wf/restart_count

Add restart_count
Convert async to package to prepare for split up
Merge branch 'master' of wfgithub:WebFilings/furious into error-splitout

Conflicts:
	furious/async/async.py
	furious/tests/test_async.py