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.

Possible issue: this re-appropriates `RSpec::Core::SharedExampleGroup` (which used to have the definition methods), making it the class for shared example groups, and `RSpec::Core::SharedExampleGroup::DefinitionAPI` the new module that has the definition methods.  That's probably a SemVer violation (since `RSpec::Core::SharedExampleGroup` was not labeled private) so I should probably re-jigger things but I'm not sure what a good name for the class would be...

Thoughts?