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.
@jlmorgan, even if that doesn't change the meaning of the code, it doesn't read as clearly to me.  But that's just my opinion.

On the space vs. tab issue, the whole project is migrating to two spaces, so I'd let this go for now.