fix(ngModelOptions): preserve context of getter/setters

Closes #9394

BREAKING CHANGE: previously, ngModel invoked getter/setters in the global context.

For example:

```js
<input ng-model="model.value" ng-model-options="{ getterSetter: true }">
```

would previously invoke `model.value()` in the global context.

Now, ngModel invokes `value` with `model` as the context.

It's unlikely that real apps relied on this behavior. If they did they can use `.bind` to explicilty
bind a getter/getter to the global context, or just reference globals normally without `this`.
Uh, maybe I'm reading this wrong, but this will invoke `$parse` constantly... this seems like quite a performance risk, no?

Storing the parsed expression like @jbedard proposed is similar but only involves calling `$parse` once, on init, like how the non-getter/setter version of ngModel works.