Subclass Table components Row, Column, etc

Currently one can subclass Table but it isn't tremendously useful because the core components `Row`, `Column`, `MaskedColumn` and `TableColumns` are all hardwired.  This PR attempts to fix that by making these into class attributes that can be overridden.

This is a work in progress and I'm looking for initial feedback on whether this is the right direction.  I wanted to do this in order to have a custom Row that does something non-standard.

Note that this PR is entirely distinct from #1888 which is a different problem (subclassing table doesn't work for I/O registry).