Takes an ordered list of tuples; (heading_data) (key, column_width) and a slice of TableRows, the cell values
The TableRow could carry more data than the keys provided. That is, only hm.get(key) will appear in the output.
From Spreadsheets, or keyed YAML files, the table could be named.
When we generate the Markdown, we optionally may want the title of the
table at the beginning.