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 
