Fix metadata backwards compat to handle deep nesting.

This is a bit confusing, but the behavior in 2.x was:

* a group's `metadata` did not have it's computed
  keys directly available; they were exposed off of
  the `:example_group` subhash.
* The `:example_group` subhash had a `:example_group`
  key that exposed the parent group's metadata
  (both user metadata and computed keys).

Before this, we were inserting extra `:example_group`
subhashes between the layers.
Fix another bug in metadata backwards compatibility.

In RSpec 2.x, an example's `metadata[:example_group]`
did not returned it's example group's `metadata`,
but rather it's example group's `metadata[:example_group]`,
which is where all the computed values for the example
group went.

In RSpec 3, we've simplified this nesting structure
(it's silly to put an example group's computed
properties on a nested subhash keyed by `:example_group`),
but our backwards compatibility didn't work properly with this.

The problem was that `example.metadata[:example_group][:example_group]`
returned the `LegacyExampleGroupHash` available off of
`example.example_group.metadata[:example_group]`, which contains
the computed properties of the example group, but on 2.99 this
returned the computed properties of the parent group of the example's
group.

Unfortunately, I had to make one spec pending as I can't find
a way to keep it passing with the difference in how the
metadata is exposed from an example vs a group, but it really
only matters when people mutate the metadata hash and that's
not a normal, supported use case.  I think the backwards compatibility
is more important right now.  We may revert this at some point
after 3.0's been out for awhile and people have had time to
adjust to the deprecation warnings issued for the metadata changes.
Merge pull request #1490 from rspec/metadata-regression

Fix a regression in our metadata backwards compatibility
Remove reference to loading rails in spec helper documentation.

We haven't updated rspec-rails to not do this yet, and we should be
consistent. Added an extra sentence suggesting the direction we are
moving.

Related: writing that sentence without using "require" three times was a
difficult exercise.
Merge pull request #1495 from rspec/spec-helper-doc

Remove reference to loading rails in spec helper documentation.
Add `config.define_derived_metadata`.

Fixes #969 and supercedes #1089.
Merge pull request #1496 from rspec/define-derived-metadata

Define derived metadata.
Restrict minitest to 5.x.

We're not sure yet what minitest 6.x will entail. So we're locking the
gem to a 5.x version.
Include feature spec on desired behavior.

Mark feature as `@wip` so it doesn't fail the build while the feature is
being implemented.
Replace `stdlib` with `minitest` & `test_unit`.

- Remove support for the `stdlib` expectation framework
- Include `test_unit`
- Include `minitest`
- In specs treat previous `stdlib` as `minitest`
- Attempt to require the 'minitest' gem
  - Supports minitest with Ruby 1.8.7
  - Supports minitest 5.x which is not part of stdlib
Remove wip tag.
Add cuke with test/unit and minitest used together
Handle test/unit loading minitest in some cases.

The whole minitest and test/unit loading is a bit complex. It depends
greatly on which Ruby version is being used, and if either the
'test_unit' or 'minitest' gems are available.

The newer Ruby versions (1.9+) use test/unit as a light shim around
minitest. Due to this, they load minitest when test/unit is loaded. This
means we should add the new `assertions` accessors when `:test_unit` is
specified.

However, if either Ruby 1.8 is used or the 'test_unit' gem was loaded,
'minitest' will not be loaded. In these situations we should not be
adding the accessor.
Add support for the minitest + test/unit combos.

RSpec 3.x does not provide explicit support for Minitest 4.x. However,
due to differences in `require` paths, we do provide a fallback option
in the case it is used. We are not in the business of dictating which
versions our users should or should not use, nor on how they setup their
load paths (i.e. bundler or other methods).

There are a lot of subtle issues with the different combinations of
versions of Ruby + test/unit + minitest. These can cause load and name
errors.

- Update the features to specifically check for our desired assertion
  errors; instead of allowing failures due to `NameError` or `LoadError`
- Update the test/unit and minitest adapters to include fallback logic
  when different combinations occur
Note behavior change in changelog.