add chained expectation descriptions to the default descriptions of custom matchers with fluent interfaces

this fixes #532
Rather than calling the matcher protocol directly in these specs I think it's better to just use the matcher and wrap it in an `expect { }.to fail_with(msg)` expectation.