Reify shared example groups as a first-class type.

- Allows us to provide pretty `inspect` output, which
  is far better than the anonymous module output we
  normally get.
- Simplifies the creation of the shared example group.
  Previously each group instantiated a module and defined
  `included` as a singleton method.
Merge pull request #1753 from rspec/reify-shared-example-group

Reify shared example groups as a first-class type.
Revert "Reify shared example groups as a first-class type."

This reverts commit d2633abc5a20334bac48a3c2513ab84a0c587284.

I realized this broke SemVer by renaming `SharedExampleGroup`
to `SharedExampleGroup::DefinitionAPI`. I'm going to re-work it
in the next commit from scratch.
Re-implement shared example group reification.

This is a reimplementation of d2633abc5a20334bac48a3c2513ab84a0c587284
from #1753.

- Allows us to provide pretty `inspect` output, which
  is far better than the anonymous module output we
  normally get.
- Simplifies the creation of the shared example group.
  Previously each group instantiated a module and defined
  `included` as a singleton method.
Add shared group inclusion backtrace to example metadata.
Improve shared group backtrace in failure output.

- Show all shared group inclusion stack frames,
  not just the inner-most one.
- Make it work for all methods of including
  shared example groups. Previously, it only
  worked for the methods that generate a nested
  group.

Fixes #1209.
Merge pull request #1764 from rspec/reify-shared-example-group-redux

Reify shared example group redux
Merge pull request #1763 from rspec/shared-group-inclusion-backtrace

Improve shared group backtrace in failure output.
Show seed at start of suite run
Merge pull request #1761 from arlandism/show-seed-at-start

Show seed at start of suite run
changelog for #1761
[skip ci]
Remove extra blank line from seed output.

The seed output had two new lines, which worked well
at the end (since we want a blank line after our
output) but it looked funny for the new seed notification
at the start.
Merge pull request #1768 from rspec/remove-extra-blank-line-from-output

Remove extra blank line from seed output.
Specify relationship of `after` hooks and mock verification.

While it’s not recommended to rely on this behavior
(it's pretty weird to satisfy a mock expectation
in an `after` hook...), this is consistent with how
we treat `after` hooks: we don't set the example's
`execution_status` until after the `after` hooks run
because if an error happens in them we need to set
the examples's status to `:failed`. Thus, we should
not verify mock expectations until after `after` hooks
since the example has not fully completed until
those hooks have run.

This clarifies the behavior in question in #1769.
Clarify relationship of `after` hook errors and generated descriptions.

Errors in `after` hooks should not prevent generated
descriptions from being assigned. I thought that
there was a bug here based on the `rescue` clause
as it looked like errors in `after` hooks would bypass
the generated description assignment, but `hooks.run`
internally rescues errors so the rescue clause is never
reached. The spec still has value in specifying an
under-specified area.
Surface matcher.description errors in generated doc string.

This is better than printing it to the console
when it occurs.
Don't consider `after` hook expectations for generated descriptions.

Otherwise, in an example like this:

  RSpec.describe SomeClass do
    it { is_expected.to do_x }
    it { is_expected.to do_y }

    after { expect(foo).to satisfy_some_invariant }
  end

...each example would get the "should satisfy some invariant"
doc string, rather than "should do x" and "should do y."
Add changelog entries.
Merge pull request #1771 from rspec/address-after-hook-issues

Address after hook issues
Fix an exception when the DeprecationFormatter is initialized with an IO stream that doesn't respond to :path.