Move private methods from RSpec to RSpec.world.

Fixes #1338.
Always use color.
Make `described_class` to return innermost described class.

It used to return the outermost described class. It doesn't
happen very often that there is more than one class being
described in the set of nested example groups (and we
generally recommend against it), but this was surprising
behavior to me.

Fixes #1114.
Merge pull request #1360 from rspec/issue-1338

Move private methods from RSpec to RSpec.world.
Refine `described_class` inference further.

In the last commit, I made inner `describe SomeClass`
example groups get `SomeClass` as the described_class.
The logic confusingly allowed a `:described_class` metadata
key in an outer group take precedence, which meant that the
behavior depended on whether or not `described_class` was
referenced from the outer group.

This fixes that, making it work consistently:

- Use `:described_class` is present.
- Otherwise, use the group's `describe` arg
  (unless it's something like a string).
- If neither of those, look in the parent and
  recurse.
Reoder deprecation_summary to come before dump_summary

deprecation_summary can oftentimes be long and the
last thing printed gets most of the user's focus.
It's probably better that the result of the tests
is given primacy.
Add spec for deprecation summary ordering
Merge pull request #1365 from rspec/reorder-deprecation-summary

Reorder deprecation_summary to come before dump_summary
Merge pull request #1361 from rspec/fix-nested-described-class

Fix nested described class
remove Hash inheritance in exclusion & inclusion filters
Rename `include!` and `exclude!`.

I think `include_only` and `exclude_only` are
more clear about what the methods do.
Remove unneeded methods.

Having a base class implementation that raises
`NotImplementedError` can be useful for classes
that users are meant to subclass, but this is
internal and it provides little value.
Remove `method_missing`.

We're trying to shrink/tighten the interface here;
no reason to keep supporting the full hash interface.
Add changelog entry.
Merge pull request #1371 from rspec/pr-1248-merge-prep

Pr 1248 merge prep
Fix spec so it tests what it is meant to.

The context of the spec were identical to the
"with a string" one above it, but this one was
meant to be for a non-string.
Refactor metadata specs.

Rather than directly creating the metadata instances,
use RSpec's public `describe/it` API to create metadata
as a user would. This gives us greater flexibility to
refactor the metadata implementation, as our tests are
no longer coupled to the private `process` and `for_example`
methods.
Address 1.8.7 failures.

LocalJumpError:
       unexpected return
Stop calling `Metadata.new` in this spec.

This decouples us from how the metadata is created.
Merge pull request #1369 from rspec/refactor-metadata-specs

Refactor metadata specs