Async experiment with max_age

This an experiment towards solving #537
Some code can probably be merged with Watcher.begin_stop and Watcher._final_stop