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.