Run async methods through TaskEx.Run so tasks that don't run synchronously get started.

Fixes hang on mirroring a package.
Use thread synchronization to avoid I/O collisions on adding and deleting packages from file system.
Add PackageOverwriteMode setting to prevent packages from being overwritten.
Tweak 404 message on delete package and add test case.