You know, seeing this makes me think that maybe end users should declare their supported notifications using a similar mechanism.  What if formatters were required to do this?

``` ruby
class MyCoolFormatter
  RSpec::Core::Formatters.register(self, :start, :example_group, :example_started)
end
```

This explicitly tells us that the formatter is an rspec 3+ formatter with no inference needed, and does away with the `notifications` method and oddness around that.  We can use the same mechanism for our formatters.

We can make our logic smart so that it looks up the ancestor chain of a formatter and takes the union of registered notifications of the formatter plus it's ancestors to be the set of notifications it supports.  This would allow us to add a new notification to a base class and have it picked up automatically by custom formatters that subclass it.