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
Merge branch 'master' of https://github.com/angular-ui/ng-grid into move-columns