chore(grunt): add jscs task to test task

It is too easy to forget to check jscs for things like trailing whitespace
before pushing commits, such as simple doc changes.  This then breaks the
build and is messy.  Adding jscs to the test task gives people a slightly
better chance of catching these before pushing.
docs(css): ensure all type-hints have a background color

If the type of a type-hint was not recognized, say a "Promise", then
the background color was left as white.  Given that the default
foreground color is also white, this meant that such type-hints were
invisible.

Closes #6934
docs(tutorial): update to match changes to phonecat
revert: fix(Scope): aggressively clean up scope on $destroy to minimize leaks

This reverts commit f552f25171390e726ad7246ed18b994970bcf764.

The commit is causing regressions.

Closes #6897
docs($location): fix link to Developer Guide for "Using $location"

Closes #6946
docs(tutorial): update tutorial steps to discuss protractor

Closes #6940
fix($parse): mark constant unary minus expressions as constant

Previously, constant numbers with a unary minus sign were not treated as constants. This fix corrects
this behaviour, and may provide a small performance boost for certain applications, due to constant
watches being automatically unregistered after their first listener call.

Closes #6932
refactor(jqLite): make HTML-parsing constructor more robust

Previously, the jqLite constructor was limited and would be unable to circumvent many of the HTML5
spec's "allowed content" policies for various nodes. This led to complicated and gross hacks around
this in the HTML compiler.

This change refactors these hacks by simplifying them, and placing them in jqLite rather than in
$compile, in order to better support these things, and simplify code.

While the new jqLite constructor is still not even close to as robust as jQuery, it should be more
than suitable enough for the needs of the framework, while adding minimal code.

Closes #6941
Closes #6958
refactor(jqLite): IE8-support fixes

ddb8081982e26cef2d8a4e87a743df6de35332d2 refactors jqLite, and removes support
for IE8. This patch extends this to prevent the CL from breaking IE8, and to
remain suitable for the 1.2.x branch.

Closes #6963
test($compile): add tests for <option> or <optgroup> tags as root template nodes
docs(ngForm): clarify the purpose of ngForm

Related to #6704 and #2513.
docs(guide/bootstrap): remove extra call to angular.module()

There was an extra call to angular.module() not being used in 'getter' mode. While this doesn't
break the demo app, it does look kind of weird, so lets toss it.

Closes #6969
docs(tutorial): remove reference to old webserver script

script/web-server.js is not present anymore. This doc might be referencing a previous version of the
code. Currently the only way to start the server seems to be using "npm start".

Closes #6966
chore(rootScopeSpec): fix a typo in spec description
docs(tutorial): update instructions for running tests in step 2

Fixing outdated instructions on how to run the test

Closes #6972
fix(Scope): more scope clean up on $destroy to minimize leaks

Due to a known V8 memory leak[1] we need to perform extra cleanup to make it easier
for GC to collect this scope object.

V8 leaks are due to strong references from optimized code (fixed in M34) and inline
caches (fix in works). Inline caches are caches that the virtual machine builds on the
fly to speed up property access for javascript objects. These caches contain strong
references to objects so under certain conditions this can create a leak.

The reason why these leaks are extra bad for Scope instances is that scopes hold on
to ton of stuff, so when a single scope leaks, it makes a ton of other stuff leak.

This change removes references to objects that might be holding other big
objects. This means that even if the destroyed scope leaks, the child scopes
should not leak because we are not explicitly holding onto them.

Additionally in  theory we should also help make the current scope eligible for GC
by changing properties of the current Scope object.

I was able to manually verify that this fixes the problem for the following
example app: http://plnkr.co/edit/FrSw6SCEVODk02Ljo8se

Given the nature of the problem I'm not 100% sure that this will work around
the V8 problem in scenarios common for Angular apps, but I guess it's better
than nothing.

This is a second attempt to enhance the cleanup, the first one failed  and was
reverted because it was too aggressive and caused problems for existing apps.
See: #6897

[1] V8 bug: https://code.google.com/p/v8/issues/detail?id=2073

Closes #6794
Closes #6856
Closes #6968
docs(guide): fix link in "Complementary libraries" section

the link to `angular-translate` is outdated. this commit fixes it.
style(loader.js): correct JSDoc tags of the params of the function module(name, requires, configFn)

This will improve the hints for IDE's which support the Google Closure Compiler (e.g. Webstorm)
fix(ngClass): handle ngClassOdd/Even affecting the same classes

The basic approach is to introduce a new elt.data() called $classCounts that keeps
track of how many times ngClass, ngClassEven, or ngClassOdd tries to add a given class.
The class is added only when the count goes from 0 to 1, and removed only when the
count hits 0.

To avoid duplicating work, some of the logic for checking which classes
to add/remove move into this directive and the directive calls $animate.

Closes #5271
fix(Scope): revert the __proto__ cleanup as that could cause regressions

When a async task interacts with a scope that has been destroyed already
and if it interacts with a property that is prototypically inherited from
some parent scope then resetting proto would make these inherited properties
inaccessible and would result in NPEs