feat($formData): function to access the form controls (plus the filter) on ngModelController

Implements #2791

Usage is:

```js
$scope.myForm.$formData() // return all controls on the current form
$scope.myForm.$formData({'$dirty': true}) // return only dirty controls  on the current form
$scope.myForm.$formData({'$pristine': true}, '$viewValue') // return only pristine controls  on the current form but instead, return their $viewValue
```

This is mainly useful when dealing with directives that alter the $modelValue but not the $viewValue (like the ui-mask), submitting AJAX, fetching non-DOM representations of controllers, etc

Signed the CLA as Paulo de Oliveira Cesar