Implement chained (composed) assertions.

The idea is to make possible to have multiple matchers in a sigle expectation.
It does only works with matchers based on `BaseMatcher` as it define the `and`
method there.

This idea arised in the issue #280 about make composable matchers.

I've added specs and cucumber features, but I'm almost sure that I've missed
some functionality as the error messages. I can work on those but I want to be
sure that I'm not misdirected.

Can I have some feedback?