tag() may take 2 or 3 args:
tag(tagname, inner)
or
tag(tagname, attrs, inner)
Fix tests: pop() wasn't returning safe string, use="" was emitting wrong code for js
Switch to html.parser instead of lxml; process= special attribute to allow 'raw' blocks
Minor refactor + whitespace changes
Doc updates, including start of a reference section
Test updates (pre-html.parser change)