Reify shared example group redux

Follow up to #1753.  I realized that changing `SharedExampleGroup` from a module with a definition methods to a class (and moving the definition methods to a new module) is a breaking API change.  Also, `SharedExampleGroup` as a name for the class suggests an instance is created for every shared example group, but we only create an instance when we need to turn the shared group into an includable module, so I think `SharedExampleGroupModule` is a better name, anyway.

/cc @JonRowe