Fix issues with column registration and subclasses.

The column registration had a nasty bug when used with subclasses of
subclasses of DataGrid.

If a subclass was being used as a normal datagrid, rendered on a page,
it would populate its registry of columns. If a subclass of that was
then used, it would inherit the registry, ignoring any custom columns
that it may itself provide.

Instead of storing the column registry on the datagrid itself, we now
have a map of classes to columns. We can then reference those registries
by the specific class we care about, instead of inheriting registry from
parent classes.