Async Invalidate and InvalidateAll

Invalidate and InvalidateAll currently are assuming that even though delete is an asynchronous method, we treat it as synchronous, and generally do dumb stuff. Fix it to correctly respect completion.

### Breaking Changes

Note that this *is* a behavior change, apps using Akavache should audit their use of Invalidate and InvalidateAll (like catching errors that come out of it)