Fix depth incrementing so that new asyncs updated

When a new Async is being started as the result of a finished Async, or
in the case of an Async restarting, the options will be updated with the
correct next_depth.

Tests have been updated and added so that both cases of a new Async
started and an Async being restarted, the increment is checked.
Add propagation of max_depth in Async options

Ensure that when a custom max_depth is set, that it is propagated
onwards down the chain through either the restarted Async's options or
the new Async's options.

Add tests to cover both new async start and restarted async.