Dynamic Column Definitions and Improved Table Redrawing

This is a quick attempt to add two features to Smart Table:

  * Enable column definitions to be dynamic. Prior to this patch, if you add a column to a column definition array, it just appends it to the list of columns, and there's no way to clear them out. This patch enables synchronization between the columns model and the table through a configuration parameter: syncColumns. When true, it will nuke the columns list and reinitialize whenever the column definition changes. If it's not set, or set to false, it will behave as it originally did
  * Redraw the table whenever either a) the length of the data collection changes (current behavior) or b) the data collection itself changes regardless of whether or not the length is different (this is new). Prior to this patch, if you assign a completely new array as the data collection, and it happens to be the same length as the old one, the data isn't updated properly in the internal model.

If you'd like any additional information, tests or changes, let me know!

-Matt