feat(ngModelController): expose $setModelValue

### General usecase:

- allow other directives requiring `ngModel` to easily assign model value
- `$setViewValue` works only with basic "flat" values like strings or numbers (eg not objects).

currently similar thing can be achieved by using 

```javascript
$parse(attr.ngModel).assign(scope.$parent,modelValue)
```

but this approach gets more complicated with multiple directives and isolate scopes.


### Specific usecase:

AutoComplete input directive returning objects instead of values.

```html
<input type="text" auto-complete-user ng-model="user">
```

parser:

```javascript
function(value){ return {name:value} )
```

formatter:
```javascript
function(value){
  return angular.isObject(value) ? value.name : value 
}
````

the user list dropdown template:

```html
<li ng-repeat="user in users" ng-click="select(user)">{{user.name}}</li>
```

and the `select` function would be:

```javascript
function(user){
  ngModel.$setModelValue(user)
}
```