Unlink

This stack of patches is designed to allow us to safely revert the async purgedir changes without reintroducing the original deadlock.  The goals are the same as those of #2408.  With this entire stack of patches applied I'm able to pass the full test suite.  These changes are ready to receive some wider testing.