Change HtmlProvider to follow other providers more closely

* Rename HtmlTableProvider to HtmlProvider
* Split Inference/Generator/Provider
* Add constructors to the top level instead of repeating for each table. Each table will still only be converted to strong types when requested
* Change static types to properties to get to the tables

//cc @colinbull