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.
Merge pull request #2056 from PaulL1/columnDefs

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