docs(guide:unit-testing): add an example unit test for directives
docs(di): fix typos and grammar
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.