Refactored ensure() and ensureNot(); added throwProvidedException()

I think string interpolation is easier to read as well as more consistent with the rest of our code