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?
It'll be more obvious if you view the diff with `?w=1` to ignore whitespace, but the old implementation at the end of `Registry#add` was:

``` ruby
          mod = Module.new
          (class << mod; self; end).__send__(:define_method, :included) do |host|
            host.class_exec(&block)
          end
          RSpec.configuration.include mod, *metadata_args
```

In other words, every time a shared example group is defined with metadata, it instantiates a one-off anonymous module, defines a singleton method `included` that cause the group block to be eval'd on inclusion, and configures RSpec to include it for matching metadata.

Subclassing module with a common definition of `included` allows us to avoid having to re-define that method for every shared group.

We couldn't get this to work without subclassing module because only `Module` instances can be included.