Fix #1665 (Grid.js): refresh rather than refreshCanvas columnDef watch

Allow dynamically adding columns by shifting to a refresh rather than
refresh canvas when the columnDef watch is triggered.

Also address #1586, ability to insert columns rather than just append.
Includes new tutorial, functional tests and unit tests, as suggested
in #1586.
Merge pull request #1670 from PaulL1/1665_dynamically_change_columns

Fix #1665 (Grid.js): refresh rather than refreshCanvas columnDef watch