async/await adoption

Removed all Task.Run calls to sync API. This just creates a new thread
that then sits and waits, which is not ideal. Used async/await instead
which does not require extra threads.
Consider:

```C#
ErrorProvider.ThrowIfStatusMismatch(response, validStatuses ?? HttpStatusCode.OK);
```

Mind you, I don't C# so I have no idea if that actually works. = p

Also, there appears to be a mix and match of tabs and spaces in the changed code.