docs(ngMock): fix typo providers -> provides

Should be a verb, ☆.。.：・゜☆MERCI BEAUCOUP☆.。.：・゜☆
docs($sce): update the `parseAs` method name
fix($compile): bind ng-attr-* even if unbound attribute follows ng-attr-*

Previously, <element ng-attr-foo="{{binding}}" foo="bar"></element>'s "foo" attribute would always
equal "bar", because the bound version was overwritten. This CL corrects this behaviour and ensures
that the ordering of attributes does not have an effect on whether or not ng-attr-bound attributes
do their work.
fix(injector): allow multiple loading of function modules

Change HashMap to give $$hashKey also for functions so it will be possible to load multiple module
function instances. In order to prevent problem in angular's test suite,  added an option to HashMap
to maintain its own id counter and added cleanup of $$hashKey from all module functions after each
test.

Before this CL, functions were added to the HashMap via toString(), which could potentially return
the same value for different actual instances of a function. This corrects this behaviour by
ensuring that functions are mapped with hashKeys, and ensuring that hashKeys are removed from
functions and objects at the end of tests.

In addition to these changes, the injector uses its own set of UIDs in order to prevent confusingly
breaking tests which expect scopes or ng-repeated items to have specific hash keys.

Closes #7255
docs(ngPluralize): spell Mary's name correctly

Update ngPluralize.js

Just a silly change to the name of one of the examples that appears to be a typo. Changing Marry to
Mary as the first would be a verb and the latter would be an extremely common name.

Closes #7884
docs(tutorial/step-4): fix e2e test

After a protractor update the test syntax had to be changed.

Closes #7919
docs($provide): it is a service not an object

Closes #7917
fix(input): escape forward slash in email regexp

This messed up with syntax coloring and variable hovering in chrome developer tools and made debugging really difficult.

Closes #7938
chore(tests): remove a lingering iit in end to end tests
chore(grunt): check files in src for ddescribe/iit

Previously, only files in test/ were checked. This does not capture
end to end tests, which are in comments in src/.
docs(ngSrc): srcset used instead of src for img attribute

In `ngSrc` documentation `srcset` is used instead of `src` as `img` element attribute in the example.

Closes #7951
docs(ngModelController): update setValidity

Needs to be `$error[validationErrorKey]!=isValid` and not
`$error[validationErrorKey]=isValid`.

See https://github.com/angular/angular.js/blob/master/src/ng/directive/input.js#L1627

Closes #7934
docs(guide/compiler): change {{user}} to {{user.name}} in example

If user has an `actions` property, it should be an object,
which means if you {{user}}, it'll print out the object.
fix($injector): check if a fn is an array explicitly

This change makes the code easier to read and also fixes a compatibility issue
with opal.js which pollutes the global state by setting $inject property on
Array prototype

Closes #7904
Closes #2653
fix(numberFilter): correctly round fractions despite floating-point arithmetics issues in JS

Closes #7870
Closes #7878
fix(input): improve html5 validation support

This CL improves mocking support for HTML5 validation, fixes the behaviour which invokes validators.

Previously, an input would only be revalidated if either its value changed, or if it was the empty
string but did not suffer from bad input --- now, it will be revalidated if either the value has
changed, or the value is the empty string, there is a ValidityState for the element, and that
ValidityState is being tested by one of the validators in the pipeline.

Closes #7937
Closes #7957
docs($location): hashPrefix, html5Mode are methods

Closes #7915
docs(srcset): fix mistake in example
docs(guide/introduction): use durandal as an example of a framework

To me knockout is a library that does data binding well.
Durandal is a framework that uses knockout as it's data binding component.
perf(jqLite): don't use reflection to access expandoId

Since we allow only one copy of Angular to be loaded at a time it doesn't
make much sense randomly generate the expando property name and then be
forced to use slow reflective calles to retrieve the IDs.