simple-markdown: add basic list parsing

Summary:
list parsing is hard; this code is awkward but hopefully not
moreso than the original marked.js code.

This seems to work for the basic cases I tested it with. I'm
not confident that it won't fall down in future cases, but we
can fix those when we get to that point.

I also changed how capturing newlines in `text` elements works
a bit so that we don't get an extra <span> </span> at the end of
list items (instead getting an extra newline). I'm not sure this
is important or the way we want to keep it necessarily; ideally
we'd get rid of that newline there completely, but I don't think
it affects the resulting output.

Test Plan:
added some new tests in `make test`
played around with the [[simple-markdown-tester]] widget a lot

Reviewers: emily

Reviewed By: emily

Differential Revision: http://phabricator.khanacademy.org/D12536