Create PublicApi for core grid, add row visibility logic

Refer #1507 and #1207 

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.