Formatter registration

Reworking formatter registration, this moves the configuration of formatters out of `RSpec.configuration` into a new object `RSpec::Formatters::Collection` and now all formatters are registered as listeners according to their interface specification. 

This is step 1 in my proposed refactoring for formatters. Step 2 is converting all the notifications into value objects (I've made a start on this) so we can then extract common logic about notifications into those rather than having massive base classes.

~~I still need to work on the LegacyFormatter, but I wanted to get some review on this whilst I do that.~~