Add shorthand `chain` syntax for custom matchers

The `chain` block in fluent matchers almost always just assigns its argument to an instance variable:

```ruby
RSpec::Matchers.define :be_bigger_than do |first|
  match do |actual|
    (actual > first) && (actual < @second)
  end

  chain :and_smaller_than do |second|
    @second = second
  end
end
```

Requiring a block is kind of overkill in this common case, and I get tired of reimplementing the exact same thing in every fluent matcher I define.

This pull request allows you to instead write:

```ruby
RSpec::Matchers.define :be_bigger_than do |first|
  match do |actual|
    (actual > first) && (actual < second)
  end

  chain :and_smaller_than, :second
end
```

Namely:

* you can just say `:second` instead of `do |second| @second = second end`; and
* as a bonus, since the DSL now knows a meaningful name for that remembered value, you can refer to it (e.g. in `match`) by saying `second` instead of `@second`.

I think this is an improvement. WDYT?
Wow, 1.9.2 has been causing lots of annoyances for us recently :(.

Do you mind leaving a comment explaining that it has to be this way due to 1.9.2?  When we drop support for 1.9.2 (perhaps in RSpec 4?) it'll help make it clear we can move the method def down below to make it more standardized.