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.
I generally dislike inheriting from a `Struct` instance because of the extra class in the ancestor chain.

This started as a `Struct.new` block but I discovered that YARD didn't pick up the methods I defined in the block.  I think it's because YARD parses the ruby code, rather than runs it, so when it sees methods defined in a block rather than in a class definition it's not sure what class they are attached to.  This form puts the method defs in a normal class definition so YARD sees it properly.

Actually, we have a bunch of other places that use the `Struct.new` block form that have this problem.  For example, [`SeedNotification`](https://github.com/rspec/rspec-core/blob/v3.1.7/lib/rspec/core/notifications.rb#L340-L353) has `seed_used?` and `fully_formatted`, but the [docs](http://www.rubydoc.info/gems/rspec-core/RSpec/Core/Notifications/SeedNotification) don't render those methods.

We should perhaps switch all of our uses of `Struct.new` to this form? Thoughts?