Propagate deletes

Current behaviour:

  1. a blob is deleted locally, but we are offline.
  2. we fail and an error is raised to client, blob isn't deleted.
  3. it is currently expected that the application retry

What we want: if a blob is deleted locally, but remote deletion fails, then the blob is marked as PENDING_DELETE and deleted on next sync.