Stop test warnings from being swallowed
Adding assert_warns_such_that

* Can be used either as a context manager or with a callable
* Follows the same (general) pattern as assert_raises_such_that