feat($parse): support trailing commas in object & array literals

Per ECMAScript 5.1 specification trailing commas are allowed in object and
array literals. All modern browsers as well as IE>8 support this syntax.
This commit adds support for such syntax to Angular expressions.
revert: fix($location): parse query string when path is empty in hashbang mode

This reverts commit cad717b1171affc3d540cea372576c70b0cb2295.

This change causes regressions in existing code and after closer inspection
I realized that it is trying to fix an issue that is should not be considered
a valid issue.

The location service was designed to work against either "hash" part of the
window.location when in the hashbang mode or full url when in the html5 mode.

This change tries to merge the two modes partially, which is not right. One
reason for this is that the search part of window.location can't be modified
while in the hashbang mode (a browser limitation), so with this change part
of the search object should be immutable and read-only which will only cause
more confusion.

Relates to #5964
chore(doc-gen): add debug-dump processor
docs(*): fix jsdoc type expressions

These errors in the docs were preventing some parts of the docs from being
parsed.
fix($animate): ensure all animated elements are taken care of during the closing timeout

Closes #6395
test($animate): ensure staggering timeout tests are secure
fix($animate): ensure that animateable directives cancel expired leave animations

If enter -> leave -> enter -> leave occurs then the first leave animation will
animate alongside the second. This causes the very first DOM node (the view in ngView
for example) to animate at the same time as the most recent DOM node which ends
up being an undesired effect. This fix takes care of this issue.

Closes #5886
fix(ngAnimate): TypeError Cannot call method 'querySelectorAll' in cancelChildAnimations

When an element containing both ng-repeat and ng-if directives attempts to remove any items from
the repeat collection, the following error is thrown: "TypeError Cannot call method 'querySelectorAll'
of undefined".  This happens because the cancelChildAnimations code naively belives that the jqLite
object always has an element node within it. The fix in this commit addresses to securely check to see
if a node was properly extracted before any child elements are inspected.

Closes #6205
fix($animate): only block keyframes if a stagger is set to occur

Transitions must be blocked so that the initial CSS class can be applied
without triggering an animation. Keyframes do not need to be blocked since
animations are always triggered on the starting CSS class, however, if a
stagger animation is set to occur then all elements for index > 0 should
be blocked. This is to prevent the animation from occuring early on before
the stagger delay for the given element has passed.

With ngAnimate and keyframe animations, IE10 and Safari will render a slight
flicker effect caused by the blocking. This fix resolves this issue.

Closes #4225
chore(travis): add gitter config
fix($animate): ensure all comment nodes are removed during a leave animation

Closes #6403
docs(contribute): add table of contents to contributing doc

- add linked list to top of document
- add anchor elements to secondary headings

closes #6287
docs(guide/directive): update directive restrict options

- add missing 'C' restriction for class names
docs(errors/infdig): add a common example

Mention common cause of error is binding to a new array on every $digest loop.

Closes #6465
docs(guide): add a new django tutorial

 - add a link to a tutorial on intergrating angular and django
docs(guide/resource): add links to ngResource and $resource
docs($injector): fix typo

Duplicate 'that' words present in the document, just remove one of them.

Closes #6469
docs(changelog): fix typos
chore(scripts): fix typos in scripts/utils.inc
docs($compile): fix typo