Compound matchers (based on #329)

Here I've started with the work @eloyesp did in #329 and further improved on it to get it in a really solid state.

One of the biggest challenges was finding a way to format the failure messages well given that the failure messages of the sub-matchers can be multiple lines.  I settled on an indentation technique.  You can see how it looks in compound_spec.rb.

@eloyesp, your feedback is welcome about my changes, of course.