Initial implementation of high-level interface

This includes #25 but will be rebased.

We should have a 'high-level' function that can take many different kinds of input and understand them, and this is a first stab at it.
Is there any point in writing `:class:`? The html output is the same if it's removed and less characters is better, no?