Allow registering custom markup engines

This allows users to register new extensions and define how they should be rendered.

My use case: I'm using this in a project to display some Coq .v files and would like to be able to [display them appropriately](http://coq.inria.fr/distrib/V8.4/stdlib/Coq.Bool.Bool.html).

I'm glad to make changes if you have any feedback.