Ensure Assert.Throws delegates are well cultured

This is part of our MQ effort to minimize unit test failures that compare
string messages do not break in non-English machines.

Additionally introduces Assert.ThrowsAsync<TException> to simplify
assertion of async code.

Work Item: 1462

(cherry picked from commit fb44d05716267d50b47e1edd1d2a0d59243c0e74)