subclass IPython.core.display HTML object for more flexibility.

By defining `_repr_*_` functions, IPython will just call these
functions when a non-HTML representation is required.
ditto on pdf...