[WIP] add SelfDisplayingFormatter

use it to dispatch `_ipython_display_`

First attempt at #6687

Allows `for_type` registration for self-displaying functions, etc.

I'm not sure this is the way to go. It moves the `_ipython_display_` handling inside DisplayFormatter, and if the object does display itself, the DisplayFormatter will have no formatted data to return.

I can also look into the idea of `application/javascript` display data having access to the rest of the display message, in which case it could do things with other mime-type data on its own, including call `this.append_map['text/html'](data['text/html'])` to put HTML onto the page.

ping @ellisonbg, @jdfreder, @ssanderson
As a reader, `self.self_formatter` makes me assume that this is somehow a formatter for the Formatter object itself.