fix(Pinning): Fix pinning when col has dyanmic width

Change column's width to it's drawnWidth when it becomes pinned.

Fixes #1634
fix(Column Resizing): Don't update widths in colDef

column.drawnWidth wasn't being updated after column resizing. This change
does two things:

1. Prevent updating column.width in `updateColumnDef` if it already has a
value set and the value is a number. If the column has a width that's a
number then we're assuming the user has said "I want it to be this wide"
and we shouldn't override that.
2. In the column resizer feature, update column.width, not colDef.width.
Fix #1685: Remove col.index from most code, add col.uid

Tidies up much of the column behaviour.

Removed col.index everywhere it appears, except for in the cell content
templates.  For the cell content, replace with col.uid, which is now
uniquely generated when the column is created, and never changed again.

Should also fix #1694, but need to push to be sure.
Merge pull request #1705 from PaulL1/1685_replace_col_index

Fix #1685: Remove col.index from most code, add col.uid
Fix #1704(rowHeader): expose addRowHeaderColumn method, add tutorial
Merge pull request #1706 from PaulL1/1704_row_header

Fix #1704(rowHeader): expose addRowHeaderColumn method, add tutorial
Fix #1702(gridCol): raise sortChanged on unsort
Merge pull request #1707 from PaulL1/1702_sort_change_on_remove

Fix #1702(gridCol): raise sortChanged on unsort
Fix #1690(rowEdit): dirty class shouldn't take precedence
Merge pull request #1708 from PaulL1/1690_rowedit_error_before_dirty

Fix #1690(rowEdit): dirty class shouldn't take precedence
doco(sort): clarify sort semantics for menu, fix #1688
Merge pull request #1709 from PaulL1/1688_sorting_by_menu

doco(sort): clarify sort semantics for menu, fix #1688
enhancement(grid menu): refactor col menu, implement grid menu

Implement #1676 grid menu.  Also addresses #1648 and #1631, moving the
ng-hide from the menu inner to the menu.

Substantial refactor of column menu and grid menu.  Removed most of the
show/hide logic from column menu, rely on the functionality within
grid menu.  Moved to use a more-angular animate, which I'm not 100% is
working, but it looks the same as it did before on the tutorial pages.

I moved the menus to use ng-if instead of ng-hide.  When debugging the code
it became apparent to me that each menu item was being evaluated individually
every time the grid scrolled, which seemed like excess load for no reason.  By
moving to ng-if the elements are only in the DOM when someone actually clicks
the menu.  It seemed to make scrolling smoother, but I might have just wanted
to believe that.

New grid menu tutorial.

Modified exporter to insert options into grid menu, and added options to control
what is inserted.
Merge pull request #1710 from PaulL1/grid_menu_final

enhancement(grid menu): refactor col menu, implement grid menu
Enh(Render): Add some error checking to grid rendering
Merge pull request #1716 from PaulL1/1712_precompile

Enh(Render): Add some error checking to grid rendering
Fix #1716: didn't compile

Apparently you need to be careful when running grunt dev that the
tests that are running relate to the code change you just made, and
aren't still the e2e tests running from the previous change.  Because
otherwise it doesn't even lint your code changes.  Sigh.
Merge pull request #1718 from PaulL1/fix_1716_jshint

Fix #1716: didn't compile
Enhance(gridMenu): further refactor of menu logic, onclick handlers

Move handlers from column menu into grid menu, remove obsolete code,
provide 'menu-hidden' event to allow better tracking of menu state.

Extensions to exporter to better take advantage of grid menu.
Merge pull request #1719 from PaulL1/extend_grid_menu2

Enhance(gridMenu): further refactor of menu logic, onclick handlers