fix($injector): improve $injector:nomod error message

Closes #2695
refactor(Angular.js): remove code duplication

Closes #2890
style(sanitize): fix typo in variable names
fix(scope): watches can be safely unregistered inside watch handlers

Closes #2915
feat(ngDocs): add links to source for API

 - add tests
 - the link points to the gruntUtil.getVersion().number tree on github
fix(ngValue): made ngValue to write value attribute to element
fix(ngSubmit): expose $event to ngSubmit callback
fix(sanitize): match URI schemes case-insensitively

According to RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)
schemes such as http or mailto are case-insensitive. So links such as
http://server/ and HTTP://server/ are valid and equivalent.

Closes #3210
fix(ngScenario): select().option(val) should prefer exact value match

With select(...).option(val) it previously would select the first node
which contains the value, even if an exact match was available.
This fix prefers exact matches if available, otherwise it reverts
to the previous 'contains' behaviour for backwards compatibility.

Closes #2856
feat($resource): support an unescaped URL port

The colon character is used to identify parameters in $resource.
This meant that we had to escape the colon used in a port.
It turns out that this is not necessary if we assume that parameter
names cannot consist of only digits.
If the parameter consists only of numbers, then it's a port.

Closes #2778
style(ngdocs): fix minor CSS issues
feat(Angular.js): skip JSON.stringify for undefined

Return early in `angular.toJson` if the object to be stringified is `undefined`.
IE8 stringifies `undefined` to `'undefined'` whereas other browsers return
`undefined`. This normalizes behavior and passes currently broken unit tests
in IE8.
chore(ngdoc): wrap all pages inside of a container tag for easy styling
fix($http): allow interceptors to completely override headers

Closes #2770
chore(package.json): fix name to work with latest NPM
fix(angular.equals): add support for regular expressions

Regular expression objects didn't used to be considered to be equal when using
'angular.equals'. Dirty checking therefore failed to recognize a
property modification.

Closes #2685
fix(grunt): cache version number

caching the version number speeds up the build and preserves resources.

this also fixed EMFILE error that now occurs on some macs.
style(ngMock): add missing whitespace
docs(di): promote registering controllers on modules
feat(ngPluralize): add alternative mapping using attributes

Add an alternative way to define a mapping for ng:pluralize using
attributes instead of the `when` attribute

Closes #2454