HTML Parsing Cleanup

* Can pass ```Flavor``` to HTML parse (closes #4594 and #5130). Instead of #5131
* Cleanup API for HTML parsers

I added new (public class) ```Flavor``` which users can subclass. Currently the expectation is to pass in the class (not an instance of the class)

CC @cpcloud @jtratner @jreback