Add new Table method _rebuild_table_column_views

Some table manipulations can corrupt the Column views of self._data.
This function will cleanly rebuild the columns and self.columns.  This
is now used in `add_row()`, `sort()`, and `reverse()`.  It should likely
be used for any method that modifies `self._data`.

This is exactly the code that had been at the end of `Table.add_row()`
but now written out in a more understandable fashion with a bunch of
comments to explain some of the subtleties that I had to rediscover.
Merge pull request #829 from taldcroft/table/bug-sort

Bug with Table sorting.  This also affected the reverse method.