Sometimes, you just need to signal failure, and the logic doesn't make
sense to encapsulate within `.to.be.not` type chaining. This commit
adds an explicit `fail()` assertion which forces failure. Since there's
no context to expect() with which to construct an 'expected ... to be
...` type failure message, also let a message be specified with an
optional first argument: `fail("custom message")`.