Handle cmark parsing options
This adds support for the [CMARK_OPT_*][1] flags to to_html/2, to_html/3
and to_html_each/3. Option flags are passed as a keyword list.
The flags are defined as:
* `sourcepos`: Include a `data-sourcepos` attribute on all block elements
* `hardbreaks`: Render `softbreak` elements as hard line breaks
* `safe`: Suppress raw HTML and unsafe links (`javascript:`, `vbscript:`,
`file:`, and `data:`, except for `image/png`, `image/gif`,
`image/jpeg`, or `image/webp` mime types). Raw HTML is replaced
by a placeholder HTML comment. Unsafe links are replaced by
empty strings.
* `normalize`: Normalize tree by consolidating adjacent text nodes.
* `validate_utf8`: Validate UTF-8 in the input before parsing, replacing
illegal sequences with the replacement character U+FFFD.
* `smart`: Convert straight quotes to curly, --- to em dashes, -- to en dashes.
e.g.:
```elixir
Cmark.to_html(some_markdown_string, [:smart, :sourcepos])
```
[1]: https://github.com/jgm/cmark/blob/3a499838a1bfa6d84852118fdd8775eac339a754/src/cmark.h#L490-L529