docs(index): add seed app link to menu item
docs(cacheFactory): correct typos
docs(bootstrap): Note that ngScenario requires ngApp

ngScenario expects an ngApp directive to be used, and doesn't work for
manually bootstrapped apps. The failure mode is to hang on navigation.

Trying to make this wont-fix bug less obscure by documenting it.
Eventually Protractor will replace ngScenario and fix this.
fix($$urlUtils): remove dependency on $window

$window may be mocked out in tests causing those tests to fail.  So
don't use $window.
fix($$urlUtils): use document instead of $document
fix($location): prevent infinite digest error due to IE bug

If an app uses HTML5 mode and we open an html5 url on IE8 or 9 which
don't support location href, we use location.replace to reload the page
with the hashbang equivalent of the url but this fails with infinite
digest. This is because location.replace doesn't update location.href
synchronously on IE8 and 9.

Closes #2802, #3305, #1417
docs(minErr): Build minErr doc site
fix(equals): {} and [] should not be considered equivalent

angular.equals was returning inconsistent values for the comparison between
{} and []:

    angular.equals({}, []) // true
    angular.equals([], {}]) // false

Since these object are not of the same type, they should not be considered
equivalent.
docs(directive): Clarified and cleaned up directive guide

- corrected terminology about how directives use `require`
- added more variations to the DirectiveDefinitionObject
- removed some slightly superfluous text

docs(directive): Minor correction to example to avoid bad practice

Anchor tags should use `ng-href` instead of `href` for interpolation.

docs(directive): Supplementing DDO description

DDO = Directive Definition Object
Tweak recommended here:
https://github.com/angular/angular.js/pull/2888/files#r4664565
fix(numberFilter): always convert scientific notation to decimal

Previously, the number filter would format small and large numbers
as scientific notation. It now uses toFixed() to ensure that all
requested digits are shown.
fix(ngRepeat): handle iteration over identical obj values

Modifies default trackByIdFn to factor both key and value into hashKey
for non-array primitive (i.e. index not provided) values

Closes #2787
Closes #2806
fix(form): pick the right attribute name for ngForm

Closes #2997
feat(ngRepeat): add $even and $odd props to iterator
fix(ngMobile): prevent ngClick when item disabled

 - the ngClick attribute was always triggered, regardless the ngDisabled/disabled attributes
 - we now check the DOM disabled status before triggering the original click event

Closes #3124
Closes #3132
fix(select): don't support binding to select[multiple]

changing the type of select box from single to multiple or the other way around
at runtime is currently not supported and the two-way binding does odd stuff
when such situation happens.

we might eventually support this, but for now we are just going to not allow
binding to select[multiple] to prevent people from relying on something that
doesn't work.

BREAKING CHANGE: binding to select[multiple] directly or via ngMultiple (ng-multiple)
directive is not supported. This feature never worked with two-way data-binding,
so it's not expected that anybody actually depends on it.

Closes #3230
fix(ngMobile): emit click event for touchy clicks

Previously, no handlers for the click event would be called for the
fast, touch-based ngMobile clicks, only for desktop browser clicks. Now
the event will fire properly for all clicks.

Closes #3219
Closes #3218
Closes #3137
refactor(location): Refactored location service to rely on urlUtils instead of RegEx.

The location service, and other portions of the application,
were relying on a complicated regular expression to get parts of a URL.
But there is already a private urlUtils provider which relies on
HTMLAnchorElement to provide this information, which is suitable for most cases.
In order to make urlUtils more accessible in the absense of DI,
its methods were converted to standalone methods available globally.

The urlUtils.resolve method was renamed urlResolve, and was refactored to only
take 1 argument, url, and not the 2nd "parse" boolean. The method now always
returns a parsed url, and all places in code which previously did not want parsed
can now get the value from the href property of the returned object.

fix($location): support IPv6 addresses

Tests were added to ensure IPv6 addresses were handled correctly.