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