Fix #2049(columnDef): don't change user-provided column def

Also includes capability for columns to be dynamically set to
visible and not visible with a callback provided so that the grid
will give effect to that.  Refer tutorial 113.