docs($q): fix missing bracket in the example
docs(guide/directive): fix typo
docs(guide/concepts): some typo/grammar fixes
docs(): Fix a couple of typos in the documentation
fix($resource): prevent default params to be shared between actions

Having a $resource defined as:

var R = $resource('/Path', {}, {
  get: {method: 'GET', params: {objId: '1'}},
  perform: {method: 'GET'}
});

was causing both actions to call the same URI (if called in this order):

R.get({}); // => /Path?objId=1
R.perform({}); // => /Path?objId=1
fix($cacheFactory): return undefined when removing non-existent entry

Instead of throwning an exception, remove should return undefined when
cache entry to be removed doesn't exist.

Closes #1497
docs(api): add ngRequired to input/select/textarea directives

Closes #1202
docs(README.md): fix "API Docs" link

use direct link to api docs
fix(Scope): allow removing a listener during event
docs(CONTRIBUTING.md): add contrib info file for GitHub
feat(jqLite): add triggerHandler()

we need triggerHandler() to become jQuery 1.8.x compatible.

this is not fully featured triggerHandler() implementation - it doesn't
bother creating new DOM events and passing them into the event handlers.

this is intentional, we don't need access to the native DOM event for our
own purposes and creating these event objects is really tricky.
fix(jqLite): fire $destroy event via triggerHandler

in jQuery 1.8.x the data() data structure is changed and events are
not accessible via data().events. Since all we need is to trigger
all event handlers, we can do so via triggerHandler() api instead of
mocking with the internal jQuery data structures.

This fix was originally proposed by PeteAppleton via PR #1512.

Closes #1512
test(ngRepeat): add test for issue #1076
fix(ngRepeat): attempt to simplify and improve existing fix for #933

I'm keeping this in for future reference. The issue with this solution
is that if we shift() the first item in the array, the whole repeater
DOM will be rebuilt from scratch, we need to do better than that.
test(ngRepeat): clean up and improve tests
fix(ngModel): sync ngModel state with scope state

In cases when we reuse elements in a repeater but associate
them with a new scope (see #933 - repeating over array of
primitives) it's possible for the internal ngModel state and
the scope state to get out of sync. This change ensure that
the two are always sync-ed up even in cases where we
reassociate an element with a different (but similar) scope.

In the case of repeating over array of primitives it's still
possible to run into issue if we iterate over primitives and
use form controls or similar widgets without ngModel - oh well,
we'd likely need a special repeater for primitives to deal
with this properly, even then there might be cornercases.

Closes #933
fix(ngRepeat): support mostly-stable repeating for primitives

I'm reverting changes that were originally done to ngRepeat to fix #933,
because these are now not necessary after the previous changes to keep
ngModel always synced with the DOM.
style(jqLite): better variable names

selector => cssClasses
fix(ngClassOdd/ngClassEven): support shrinking/reordering in repeaters

We need to watch $index in addition to cssClasses because only then
we can correctly respond to shrinking or reordered repeaters.

Closes #1076
docs: load angular from CDN only on production

So that when running the docs locally, eg. during e2e testing, we use the latest build version of angular, rather than the stable one from CDN.

This fixes e2e tests running with Testacular.