feat(http): support request/response promise chaining

myApp.factory('myAroundInterceptor', function($rootScope, $timeout) {
    return function(configPromise, responsePromise) {
        return {
            request: configPromise.then(function(config) {
                return config
            });
            response: responsePromise.then(function(response) {
                return 'ha!';
            }
        });
}

myApp.config(function($httpProvider){
    $httpProvider.aroundInterceptors.push('myAroundInterceptor');
});
docs(*): fixed typos
docs(controller): improve $controller function doc readability

Improved $controller function doc readability.
docs(directive): fix typo
docs(mocks): fix typos
docs(guide): fix typo in DI. angualar -> angular
docs(guide): add missing closing div tag
feat(Scope): add $watchCollection method for observing collections

The new method allows to shallow watch collections (Arrays/Maps).
feat(ngRepeat): add support for custom tracking of items

BREAKING CHANGE:

It is considered an error to have two items produce
the same track by key. (This was tolerated before.)
chore: use Karma
docs(ngSwitch): improve the @usage example