Create PublicApi for core grid, add row visibility logic

Create a PublicApi for core, along with the ngdocs for this.

Add methods to that PublicApi, including grid.refresh,
gridRow.setRowInvisible, gridRow.clearRowInvisible and
gridRow.getRowsVisible.

Create new methods to force grid rows to invisible, and
an event that is fired whenever the rows visible changes.
Merge pull request #1519 from PaulL1/force_invisible

Create PublicApi for core grid, add row visibility logic
External sorting api, a gridOption and an event

Add external sorting api, gridOption.useExternalSorting, and
api.core.on.sortChanged().

Includes unit tests of the sort suppression (but not the
event raise, as there weren't existing sort unit tests) and a
tutorial demonstrating the usage.
Merge pull request #1539 from PaulL1/external_sort_events

External sorting api, a gridOption and an event
Revert "Merge pull request #1528 from PaulL1/header_and_column_menus"

This reverts commit 48419d484601406900a1fc83847a825a375ce985, reversing
changes made to beb57624d335471a1d07945882e91513c1fb4ce6.
Merge branch 'master' into 3.0-custom-filter-function

Conflicts:
	src/js/core/directives/ui-grid-header-cell.js