Ok, so I've tried both approaches and got stuck on both:

With the `initialize` route it's a lot harder to tell "are you a legacy formatter inheriting one of our formatters", plus if we pass in the hander, we have to add an arity check / rescue ArgumentError to make sure they even *may* accept it.

With the "no super" notifications route, we have to find an alternative way to register our own formatters notifications, as they cannot then expose the same route as custom formatters, otherwise if someone inherits from them we're back to ground zero.

Thoughts?