feat($resource): expose promise instead of only $then

- Instance or collection have `$promise` property which is the initial promise.
- Add per-action `interceptor`, which has access to entire $http response object.

BREAKING CHANGE: resource instance does not have `$then` function anymore.

Before:

Resource.query().$then(callback);

After:

Resource.query().$promise.then(callback);

BREAKING CHANGE: instance methods return the promise rather than the instance itself.

Before:

resource.$save().chaining = true;

After:

resource.$save();
resourve.chaining = true;

BREAKING CHANGE: On success, promise is resolved with the resource instance rather than http
response object.

Use interceptor to access the http response object.

Before:

Resource.query().$then(function(response) {...});

After:

var Resource = $resource('/url', {}, {
  get: {
    method: 'get',
    interceptor: {
      response: function(response) {
        // expose response
        return response;
      }
    }
  }
});
feat($swipe): Refactor swipe logic from ngSwipe to $swipe service.

This new service is used by the ngSwipeLeft/Right directives, and by the
separate ngCarousel and swipe-to-delete directives which are under
development.
docs(guide/unit-testing): add expression example

* Improved developer guide, directive unit testing documentation code with scope expression
* Removed documentation block with nothing on it
test(matchers): update toThrow matcher
feat(ngError): add error message compression and better error messages

- add toThrowNg matcher
feat($compile): support multi-element directive

By appending  directive-start and directive-end to a
directive it is now possible to have the directive
act on a group of elements.

It is now possible to iterate over multiple elements like so:

<table>
  <tr ng-repeat-start="item in list">I get repeated</tr>
  <tr ng-repeat-end>I also get repeated</tr>
</table>
feat(ngdocs): provide support for inline variable hinting
docs(): Rectify animator.animate documentation
fix($animator): ensure $animator calculates the highest duration + delay for and transitions and animations together
fix(jqLite): Added optional name arg in removeData

jQuery's API for removeData allows a second 'name' argument to just
remove the property by that name from an element's data. The absence
of this argument was causing some features not to work correctly when
combining multiple directives, such as ng-click, ng-show, and ng-animate.
chore(docs): add reference to the blog

Add a reference to the blog at the documentation.
fix(ngController): fix indentation bug which causes example to mess up
docs(overview.ngdoc): clarify wording
docs(guide): format snippets of code in plain text
docs(input): provide explanation of how ngModel will affect the local scope
docs(validate-commit-msg): fix incorrect comment

If you `cd` into the repo, `validate-commit-msg.js` will be in the root
of it.
docs(guide/di): fix some small grammatical issues
docs(guide/compiler): fix some minor language errors
docs(guide/understanding_model): improve example consistency
docs(guide/concepts): add comment as a type of directive