More general solution for indenting list items, with better nested support.

Also better support for large spacing (via paragraphs) between list
items.
The implementation is still quite messy because the rules for Markdown
lists and the parser output is quite messy.