Add chainning matcher capability.

- Make feature use ruby 1.8 hashes.
- Fix feature styling issues.
- Make Composable as a module.
Move composition out of built_in matchers.
Make the `or` method in the most simple way.

It needs refactoring I know...
Add specs for 'or' composition.

- Use send instead of public_send as it is not available in ruby 1.8.
Use polymorphism instead of conditionals.
Do not use type assertions within example.
Refactor composite matchers.

Add error messages.
Remove support for negative matchers.
Use failure_message_when_negated now.
Never match for negations.
Use failure_message without the deprecated "_for_should".
Get rid of test failing with ruby 1.8.
Rename "composite" to "compound expectation".

We've been talking about supporting composable
matchers in RSpec 3, but that's a slightly
different feature than this, and I think
"compound" gives a more obvious sense of what
this does.
Improve code formatting.
Improve failure messages from compound matchers.

The new formatting handles multiline failure
messages much better.
Make all matchers support compound expressions.
Move the definition of `===` into the `Composable` mixin.
Implement descriptions for compound matchers.
Add specs showing how you can chain many matchers together.
Improve the error message for negated compound matcher use.