(Re)implement callouts and callout lists

Restore (and enhance) support for callout lists (now with tests ;))

This pull request is based on the previous two. Please advise if you need me to rebase.

p.s. It's interesting that we are starting to go a step beyond AsciiDoc by having some information available in the document structure prior to any rendering. In this case, we know about the callout references before we've started to render, whereas AsciiDoc does it all together.