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 

`$parse(attr.ngModel).assign(scope.$parent,modelValue)`


Specific usecase:

AutoComplete input directive returning objects instead of values.

`<input type="text" auto-complete-user ng-model="user">`

parser:
`function(value){ return {name:value} )`

formatter:
`function(value){ return angular.isObject(value) ? value.name : value }`

the user list dropdown template:

`<li ng-repeat="user in users" ng-click="select(user)">{{user.name}}</li>`

and the `select` function would be:
`function(user){ngModel.$setModelValue(user)}`