be_within: for non-numeric, fail normally rather than erroring.

This allows it to be passed to `contain_exactly` for
a list that contains mixed types:

expect(["foo", 1.05]).to contain_exactly(
  a_value_within(0.1).of(1.0),
  a_string_starting_with("f")
)
Add a cuke for the new composable matchers feature.