Register formatters for the events they listen to

I just saw #884 after I had done this - almost exactly the same thing. One comment I would have on #884 is that `Notifications` is a constant, so should be upcase, and I think it's slightly more consistent to call them `EVENTS`.

@jonrowe - if you want to fix up your PR and close this one, that's cool. Or if you want to take this one, either way. Sorry for the duplication.

I still think any new listener methods should be implemented and documented on `BaseFormatter` for now, but a new formatter won't have to inherit from that class to prevent breaking after this change... I want to catch you on IRC to chat about this sometime.