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.
feat(ngTap): Add a CSS class while the element is held down.
docs(injector): fix typo

Closes: #2551
test(ngAnimate): also provide W3C transition property to work on IE10

Closes: #2492
fix($location): back-button should fire $locationChangeStart

Before $locationChangeStart event is not broadcast when pressing the back-button on the browser.

Closes #2109
fix($rootScope) ensure $watchCollection correctly handles arrayLike objects
fix(ngRepeat): correctly iterate over array-like objects

Check if the object is array-like to iterate over it like it's done with arrays.

Closes #2546
fix(ngView): accidentally compiling leaving content

closes: #2304
feat(injector): add has method for querying

Closes #2556
fix(ngAnamite): eval ng-animate expression on each animation
fix($location): prevent navigation if already on the URL
fix($location): compare against actual instead of current URL
feat(ngInclude): $includeContentRequested event

Adding a $includeContentRequested event in order to better keep track of
how many includes are sent and be able to compare it with how many have
finished.
docs(injector): add docs for $injector.has
fix($location): prevent navigation when event isDefaultPrevented
doc(input): fix small typo in code example
fix(dateFilter): correctly format ISODates on Android<=2.1

In older Android browsers, `undefined` does not act like `0` in some
arithmetic operations. This leads to dates being formatted with `NaN`
strings in the dateFilter because the implementation of the `dateGetter`
function allows offset to be an optional parameter.
The fix is to convert offset to 0 if it is undefined.

Closes #2277, #2275
fix(select): ensure empty option is not lost in IE9

Fix a check inside render for select elements with ngOptions, which
compares the selected property of an element with it's desired state.
Ensure the placeholder, if available, is explicitly selected if the model
value can not be found in the option list.
Without these fixes it's up to the browser implementation to decide which
option to choose. In most browsers, this has the effect of displaying the
first item in the list. In IE9 however, this causes the select to display
nothing.

Closes #2150, #1826