feat($q): add $q.always() method

Add $q.always(callback) method that is always called whether the promise is successful or fails; includes unit tests and updates
documentation.
docs(filter): improve syntax for usage in templates
test(location): should not rewrite Html5 deep urls
fix(location): correctly rewrite Html5 urls
docs(route): fix typo in route documentation
docs(contribute): add Java as dependency

Current build process leverages closure jar for javascript minification.
If Java is not installed and included in the PATH the build will fail.
docs($q): fix typo
refact(ngClass): improve performance through bitwise operations

Change modulo % 2 operations to bitwise & 1
Read about this in Nicholas C. Zakas book "High Performance JavaScript"(ISBN: 978-0-596-80279-0)
Use the Fast Parts --> Bitwise Operators --> Page 156++
Proven at http://jsperf.com/modulo-vs-bitwise/11
test(browser/compile): fix calls to Jasmine fail()

The fail() function in Jasmine expects an Error object parameter.
Also, there is no global alias for fail() so it must be accessed using
`this.fail(new Error())`.
fix(jqLite): correct implementation of mouseenter/mouseleave event

Implement mouseenter/mouseleave event referring to
http://www.quirksmode.org/js/events_mouse.html#link8 and jQuery source
code(not dependent on jQuery).
The old implementation is wrong. When moving mouse from a parent element
into a child element, it would trigger mouseleave event, which should not.
And the old test about mouseenter/mouseleave is wrong too. It just
triggers mouseover and mouseout events, cannot describe the process of mouse
moving from one element to another element, which is important for
mouseenter/mouseleave.

Closes #2131, #1811
test(parse): Test for the parsing not invoking twice to get self

New tests to not call twice a function to get self
fix(parse): Fix context access and double function call

Fix a context duplication and invocation to a previous context when
doing an access modifier function on the result of a function
Currently, when doing `foo().bar()`, `foo` is called twice, the first
time to get the context and the second one for `bar` to get the
underlying object. Then the call to `bar` is called using the second
instance as self
This is equivalent to doing:
```
var instance1 = foo();
var instance2 = foo();
instance2.bar.apply(instance1);
```

Closes #2496
fix(ngController): change controllerAlias to controllerAs.
feat(ngdocs): support for HTML table generation from docs code
docs($provide): fix parentheses in example
style($injector): add a comment to explain the distinction with isArray
docs(guide:directive): add directive controller usage

Specifically adding a directive controller to the example definition
and how to use declare injectables to avoid minification errors.
feat($httpBackend): add timeout support for JSONP requests

Documentation implies that timeout works for all requests, though it
only works with XHR. To implement:
- Change $httpBackend to set a timeout for JSONP requests which will
immediately resolve the request when fired.
- Cancel the timeout when requests are completed.
fix(ngController): allow dots in a controller name

The issue was introduced in cd38cbf975b501d846e6149d1d993972a1af0053
test(controller): instantiate controller defined on window

Just adding a missing spec.