fix(jqLite): support unbind self within handler

If an event handler unbinds itself, the next event handler on the same
event and element doesn't get executed.

This works fine in jQuery, and since jqLite doesn't support .one, this
might be a common use case.
docs(ngIf): remove invalid comment from CSS

We cannot use valid /* ... */ CSS comments in examples because they break the parsing
of the ngdoc comments.  We can't use inline // comments because these are not valid in
CSS.

We could use the //!annotate extension to the ngdoc parser but this does not seem to be
working.  It is best to simply remove this line.

Closes #5234
docs(css): improve definition table style

Text in definition tables are now aligned to the top of the cell. These are used in
the API index page and makes it cleared what headings match what content.

Closes #5286
docs(ng): fix typo and line lengths

Closes #5288
docs(tutorial/step-0): fix twitter bootstrap link

The url of twitter bootstrap was outdated.

Closes #5290
docs($resource): add example for a custom PUT request

Closes #5302
docs(): fix jshint issues
docs(tutorial/step-11): change "last" to "next"

Since step 12 was added, step 11 is not the last. So this is not the last improvement.

Closes #5306
fix(select): invalidate when 'multiple`, `required` and model is `[]`

When `multiple` attribute is set on a `<select>` control and the model value is an empty array,
we should invalidate the control.  Previously, this directive was using incorrect logic for
determining if the model was empty.

Closes #5337
perf: use faster check for $$ prefix

Use two calls to charAt instead of substr to detect a $$prefix in the shallowCopy functions.
This makes shallowCopy 25-50% faster (depending on which browser is used).
http://jsperf.com/angular-shallow-copy

Closes #5457
docs(bootstrap-prettify): fix $timeout issues and update related docs

End 2 end tests wait for all `$timeout`s to be run before completing the test.
This was problematic where we were using timeouts that restarted themselves because
there would never be a point when all timeouts had completed, causing the tests to hang.

To fix this $timeout had been monkey-patched but this caused other issue itself.

Now that we have $interval we don't need to use $timeout handlers that re-trigger the $timeout
so we can ditch the monkey-patch.

This commit tidies up any examples that are using this approach and changes them to use $interval
instead.

Closes #5232
chore($sniffer): make android variable public
fix(input): do not hold input for composition on android

Workaround for chrome for android until #2129 is ready.

Closes #5308, #5323
docs($compile): fix param name and improve example variable name

Closes #5310
docs(error/noregexp): fix link to ng-pattern

Closes #5313
docs(contribute): you may need sudo to install globally on unix systems

Closes #5318
docs(tutorial/step_11): fix indenting in an example

Closes #5322
docs(guide/directive): improve access to isolate scope information

Closes #5329
docs(ngInit): fix typo

Closes #5343
docs(tutorial/step-5): fix typo

Closes #5347