Fix metadata filter to not blow up on unmatched nested hashes.
Refactor HashImitatable a bit.

Provide hooks for including classes to issue
their own deprecation and to set/get values
in whatever manner they wish.

Our upcoming metadata refactoring will rely on this.
Refactor metadata so that it is prepopulated.
Change nesting structure of example group metadata.

Historically, an example group's metadata hash has
exposed its computed values via a nested `:example_group`
subhash, and then exposed it's parent's metadata via
an additional `:example_group` subhash nested within
that subhash.  Example:

describe "Parent", :parent => true do
  context "child", :child => true do
    $meta = metadata
  end
end

`$meta` in this example would be a hash like:

{
  :parent => true, # inherited,
  :child => true,
  :example_group => {
    :line_number => 2, # and other computed properties
    :example_group => {
      :parent => true,
      :example_group => { :line_number => 1 } # and others
    }
  }
}

As you can see, this is quite confusing. Why should an example group's metadata have an `:example_group` key that returns its
own metadata?

This commit changes to the following example structure:

{
  :parent => true, # inherited,
  :child => true,
  :line_number => 2, # and other computed properties
  :parent_example_group => {
    :parent => true,
    :line_number => 1 # and others
  }
}

...which is far easier to understand. This also aligns
with how an example's metadata works: it's computed
properties are available directly off of its metadata
hash rather than off of a nested subhash.

We've changed from `:example_group` to `:parent_example_group`
for the parent metadata both because it's a better label
(an example group doesn't have an example group, but it may
have a parent example group) and also because it allows us
to provide backwards compatibility and deprecation notices
when the `:example_group` key is accessed. Note that an
example's metadata hash continues to have a `:example_group`
key that returns the group's metadata; this is not deprecated.
Move more of the metadata initialization logic into the populators.
Refactor metadata so it does not subclass hash at all.
Simplify a few things related to :parent_example_group.

- Always have a :parent_example_group key. It'll return
  a blank hash if there is no parent example group.
- Simplify how `full_description` is built.
Simplify group metadata default proc.

...and get it to work better on 1.8.7.
Remove extra/duplicate :describes key.

It's confusing and unnecessary to have both
:described_class and :describes be the same thing.

I still need to deprecate :describes in 2.99.
Store :block in the metadata consistently.

We'll still need to deprecate :example_group_block
in 2.99.
Use `Proc#source_location` rather than `caller` for :location.

As @xaviershay discovered https://github.com/rspec/rspec-mocks/pull/401,
`caller` is surprisingly slow.
Doc updates.
Add benchmarks to compare our metadata changes vs master.

It appears to be 15+% faster on Ruby 2.0 and 2.1, and about
equal on 1.9.3.
Rename `Base` to `HashPopulator`.

Also, no need to provide a default for `block` arg.
Explain LegacyExampleGroupHash.

[ci skip]
Provide deprecated access to removed metadata keys.

- :describes
- :example_group_block
Changelog entries for the metadata changes.
Reduce duplication: re-use our caller filter regex.
Remove deprecated Example#options.
Leverage metadata delegation a bit more.