refactor($animate): use CSS3 transition/animation events instead of $timeouts to track ongoing animations

Closes #3629
Closes #3874
fix(ngScenario): provide event parameters as object

BREAKING CHANGE: browserTrigger now uses an eventData object instead of direct parameters for mouse events.
To migrate, place the `keys`,`x` and `y` parameters inside of an object and place that as the third parameter
for the browserTrigger function.
fix(ngAnimate): check elapsedTime on current event

onAnimationProgress now checks the event's elapsedTime property before
checking the originalEvent.elapsedTime property.
Use browserTrigger with elapsedTime parameter to trigger animation events
fix(browserTrigger): do not use document.createEvent method

Firefox 23 has deprecated the use of createEvent for transition and
animation events.  We must now use `new TransitionEvent()` and
`new AnimationEvent()` if they are available.

But of course IE doesn't support this format correctly so we must wrap
the attempt in a try block and revert to document.createEvent if necessary..
docs(mock.inject): fix typo
docs(README): add dashboard link

Closes #3934
docs(forms.ngdoc): fix spacing in example

Closes #3930
docs(angular.copy): clarify corner cases

The behaviour when null or undefined was passed was not clear.
The exception thrown when source == destination was not documented.

Closes #3946
docs($q): clarify what happens when rejected

Closes #3943
docs(Attributes): add missing documentation for $observe method

- Add proper ngdoc annotations to existing $observe documentation
- Add link to directive guide for usage example of $observe
- Add note about $observe function parameter signature

Closes #3957
fix(ngdoc.js): update default directive restrict to 'A'
docs(ng.directives): add correct @restrict for all ng directives
docs(ngChange): remove wrong @restrict and add missing @param
style(ngForm): simplify restrict difference between form and ngForm
docs(scope): clean up grammar and improve clarity

Some typos fixed and grammar improved:
- withing -> within
- life-cycle -> life cycle
- extraneous spaces
- grammar mistakes
- missing commas
- reworded unclear statements

Closes #3920
docs(guide/concepts): remove div-clear-tags that break the formatting

Closes #3974
docs(ngModel): provide link for best practices.

Closes #3973
docs(tutorial/step-10): fix incorrect link to step-8 tests

Closes #3972
fix(ngSanitize): sanitizer should not accept <!--> as a valid comment

According to http://validator.w3.org/ , <!--> is not a valid comment
and neither is any comment containing the -- substring.
test($browser): correct false positive in ApplicationSpec.js

Previously, the check that Application should return a new $window and
$document had the arguments reversed in the first call to navigateTo;
thus, the subsequent check of inequality of $window and $document in the
next navigateTo call would always pass.

This corrects the argument order, which makes this test not succeptible
to false positives.