Rearch to 1.8.0

We have completely redesigned some internals of the grid to greatly improve performance.

1: The way we treat rows vs the user data:

The "rowCache" is now static and is kept the same length as the data. When sorting, we don't sort your data, instead we make a copy, sort it, and then reassign the "entity" property of the row object to the corresponding model. this greatly improves the performance of filtering, sorting, data-reassignment (you can now update the data very frequently sub-1 time /sec), and scrolling.

for editing, still bind directly to your model. However, your data is no longer "decorated" by anything ng-grid related.

2: adding convenience methods to the options that allows you to programmatically select rows:

```javascript
// method for user to select a specific entity programatically
// @itemIndex : the zero-based index of the user's model
// @state: boolean value for whether or not to select the corresponding row.
options.selectItem = function (itemIndex, state)

// method for user to select a specific row programatically
// @rowIndex: the zero-based index of the represented row in the grid
// @state: boolean value for whether or not to select the row.
options.selectRow = function (rowIndex, state)
```

We will have examples up soon.