Get max_age to respect graceful_timemout

This an experiment towards solving #537
Some code can probably be merged with Watcher.begin_stop and Watcher._final_stop
Merge pull request #2 from amarandon/async_experiment

Async experiment with max_age