[0.16] * Improved regex for HTML comments (#263). * Fixed CDATA regex (#267). * Use linked list instead of arrays in AST: the same doubly linked node structure as cmark uses. This simplifies some code and eliminates the need for recursive algorithms, so we can render deeply-nested structures without stack overflows. * Use `children` instead of `label` (in Image and Link), `inline_content` (in Paragraph), and `c` (in Emph and Strong). * Renamed the `c` property to `literal` to match `libcmark`. * Use `literal` rather than `string_content` property for code blocks, HTML. `string_content` is reserved for raw string content that has yet to be parsed as inlines. * Improved end lines (#276). * Added a node walker, for easy AST traversal (see `node.js`). * Regularized position information into a `sourcepos` property. Added end column information. * Renamed `html-renderer.js` to `html.js`. * Replace NUL characters with U+FFFD, as per spec. * Optimized code, resulting in significant performance gains. (We've gone from being twice as fast as showdown.js to being three times as fast, on par with marked.) * Made `tight` a property of `list_data` rather than `Node`. * Added options to renderer, parser objections. * Added a `--sourcepos` command line option to `js/bin/commonmark`. * HTML renderer now throws an error on unknown tag type (which indicates a programming error). * Removed `ansi.js` code from the source tree. The test suite now uses its own mini ansi colors implementation. * Added `--time` option to `js/bin/commonmark`. * Added an XML renderer (XML representation of the AST, matching `Commonmark.dtd`). * Changed `url` property to `destination` to match `cmark` and spec. * Added `js/common.js` to hold some common code, like string unescaping and URI normalization. * Use `decodeURI` instead of `unescape`. * Added some "pathological" test cases to test suite.