docs(module): improve the installation instructions for optional modules

Currently, the documentation does a bad job of explaining the distinction between the services that it provides,
and the module itself. Furthermore, the instructions for using optional modules are inconsistent or missing.
This commit addresses the problem by ading a new `{@installModule foo}` annotation to the docs generator that
inlines the appropriate instructions based on the name of the module.
docs(overview): improve grammar
revert: fix($sce): allow IE7 standards mode to pass non-quirks mode test

This reverts commit 637c9b1611c5a75a42048ee1c591521c7031751a.
(ref #3633 and #3646)

The minimum bar for $sce is IE8 in standards mode.  IE7 standards mode
is not supported.  If you must support IE7, you should disable $sce
completely.

  angular.module('ie7support', []).config(function($sceProvider) {
    // Completely disable SCE to support IE7.
    $sceProvider.enabled(false);
  });
chore(ngdocs): fix the version jumper

correct the ordering and make gen-docs prepare the list of versions
during the build process
fix($sniffer): history problems on Boxee box

History API not working properly on Boxee box browser (old Webkit)
problem similar to the one on Android < 4
test: rename / remove duplicate unit tests
test(docs): ignore some of the specs on IE

This target was never un on our Jenkins CI. Some of the specs are using animation stuff, that IE does not support, so I'm disabling them.
feat(ngMock): add support for creating dynamic style sheets within test code
fix($animate): only execute a timeout when transitions or keyframe animations are used

ngAnimate causes a 1ms flicker on the screen when no CSS animations are present on the element.
The solution is to change $animate to only use $timeouts when a duration is found on the element
before the transition/keyframe animation takes over.

Closes #3613
fix($animate): skip ngAnimate animations if the provided element already has transitions/durations attached to it

Closes #3587
chore: reorganize test helper files under test/helpers
chore: run more browsers on Travis (IE8,IE9,IE10,Safari,FF)

Also instead of running everything in parallel, there are only two parallel tasks:
- e2e tests running in the background (only on Chrome)
- all the unit tests running sequentially
chore: use only polling on Travis/SL
chore(travis): clean up logs

Forward SauceConnect logs and Karma debug logs into a file and print these files at the very end of a build.
fix($q): reject should catch & forward exceptions thrown in errback
chore(tests): add Promises/A+ Test Suite to the build

Closes #3693
style(animateSpec): remove ws
test(docs): disable brittle tests that need to be rewritten
feat(mocks): make $timeout#flush throw an exception when empty

When calling $timeout.flush with or without a delay an exception should
be thrown if there is nothing to be flushed.

This prevents tests from flushing stuff unnecessarily.

BREAKING CHANGE: calling $timeout.flush(delay) when there is no task to be flushed
within the delay throws an exception now.

Please adjust the delay or remove the flush call from your tests as the exception
is a signed of a programming error.
fix(mocks): $timeout#flush should not update time when empty

When $timeout#flush is called with a delay and no task can be flushed within that
delay, the current time should not be updated as that gets the mock into an inconsistent
state.

BREAKING CHANGE: if a tests was written around the buggy behavior the delays might be off now

This would typically not be a problem, but because of the previous breaking change in
$timeout.flush, the combination of two might be confusing and that's why we are documenting
it.

Old behavior:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(200); //flushes only doSomething() task
```

New behavior:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(200); // throws "no task to be flushed" exception again
                  // because previous exception didn't move the time forward
```

Fixed test:

```
doSomething(); //schedules task to execute in 500ms from now
doOtherStuff(); //schedules task to execute in 600ms from now

try {
  $timeout.flush(300); // throws "no task to be flushed" exception
} catch(e) {};
$time.flush(500); // flushes only doSomething() task
```