Add spec for MatchData named capture behaviors in Ruby 1.9-2.1

Asking for a named capture returns the corresponding match, but only the
last one if multiple matches are made.

Accessing a non-matching named capture returns nil, while accessing an
undefined one gives an IndexError.
BUG: Return last *matching* named capture instead

MRI 1.9 and up to 2.1 returns the last *matching* index for a named
capture group that is present multiple times in the same regex.
Rubinius, on the other hand, returned the *last* index, even if it did
not match.

Example:

  regexp = /(?<word>foo)|(?<word>bar)/

  # MRI
  regexp.match("bar")[:word] # => "bar"
  regexp.match("foo")[:word] # => "foo"

  # Rubinius
  regexp.match("bar")[:word] # => "bar"
  regexp.match("foo")[:word] # => nil

Implementation uses #reverse_each chained with #find to find the last
non-nil match. Perhaps it would be more performant to loop manually, or
by rejecting every nil match and then taking the last one. I did not
feel that I wanted to benchmark this to any great length, so I left the
implementation that was shortest but didn't access all matches when it
wasn't neccessary.

Fixes #2721
Add additional spec on block arguments with "_".

Simplified version reported by #2678.
Tag failing spec from 37f95dd.
Move new MatchData specs to a better location

I didn't find the existing tests first, but was thankfully pointed in
the right direction by @razielgn.

I've done changes to some of the examples so that they fit in a bit
better with the existing style of the file.
Merge pull request #2723 from Mange/named-captures-fix

Named captures fix
Used simpler code in named captures.
Merge pull request #2726 from razielgn/block-argument-destructuring-failing-test

Failing spec on block arguments with "_".