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.
added tests. moved isRTL function got Grid.js
Merge branch 'PR1518'
more cleanup of ui-grid directive by removing reduntant functions
trying to fix test that fails on travis but not locally
 BREAKING CHANGE possible for custom cellTemplates   - getCellValue is no longer on $scope.  use grid.getCellValue.  grid is always on scope.
 Further cleanup of redundant methods
Update ui-grid-header-cell.js

Needs to be changed to `uiGridCtrl.grid.refresh()` or filtering is broken.
Merge pull request #1521 from Shazypro/patch-1

Update ui-grid-header-cell.js
eliminate redundant queueRefresh variable
Changes to column menus, headerCellFilter and fixing two grids

This branch combines the current upstream/master with pull requests
in upstream that made merging #1501 in particular difficult.

Key changes are:
1. Add hide column to column menu

Also includes "google translation" standard translations.
Noted that error is occurring intermittently in testing:
ui-grid watch for new pinned containers fires watch for right container FAILED

Tested and validated that this is also occurring on upstream/master,
so presume not to do with changes I've made.

2. Fix column menu with two grids: move from self to scope

Moved most of column-menu methods and variables onto $scope
so that context didn't get misaligned, and therefore two grids
is possible.  Added tutorial page showing two grids.

3. HeaderCellTemplate from column builder used, filter permitted on headerCell

Modify defaultColumnBuilder to add a headerCellFilter property to columnDef,
allowing a translate to be applied to the header without needing to use a custom
header template.  This translate in my case is angular-translate, used for
internationalisation.

Modify ui-grid-header-cell directive to use the header template from the
column builder, rather than ignoring it, which would address a concern
raised by @Shazypro on gitter.

Minor modifications to templates because the result of a compiled template
seems a little different than an inline template, and therefore some classes
ended up in different places within the ng-repeat.  This could alternatively
be fixed in the css, but css is really not my thing.

Noted that on my mac in chrome the column menus are not correctly attaching
to the columns, but I believe this is a pre-existing problem not caused by
this change.
slovak translation
Merge pull request #1532 from novice3030/master

added row header for selection feature
Merge pull request #1533 from novice3030/master

fix for row header in selection feature
Merge pull request #1528 from PaulL1/header_and_column_menus

Changes to column menus, headerCellFilter and fixing two grids
attempt to fix tests that are randomly failing
Merge pull request #1529 from scholtz/patch-1

slovak translation
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
Fix left/right scroll on OSX/trackpad

Speculative change - this fixes left/right scrolling for me.  However
it is entirely possible that it breaks left/right scrolling for other
trackpads that issue wheel events - none of my other devices issue
left/right wheel events (and perhaps such devices are few and far
between).  Submitted to see whether anyone else is impacted.