UI: Table widget

An intelligent layout widget primarily designed for data tables. The idea is that you add a bunch of rows of arbitrary widgets, and optionally a header row. It will look at all the widgets and size the rows and columns sanely to keep everything aligned. If it would need more space than is available, then it automatically adds a scrollbar. You can add a header row which will align with the body rows, but won't scroll. There's some options for spacing between rows and columns as well.

The intent is that this will replace the mutant concoctions using `Grid`s and `VBox`es that we've had so far. With the addition of some column sorting abilities, it can replace `SmartTable` as well. But not yet; that's working well enough for now.

Future plans include addition of a horizontal scrollbar when necessary and HTML-style rowspan/colspan attributes. I don't need them right now so I'm not bothering.

What I do need this for is the station screens, which is my next job after this is merged.