docs(tutorial/step02): fix missing brace

Closes #4301
docs(ngValue): add docs for ngValue directive

Closes #4267
refactor($parse): only instantiate lex/parse once

Closes #4286
docs(ngModel): fix grammar and improve clarity

Closes #4291
style(angularSpec): add missing semicolon
style(injectorSpec): add semicolons & test helpers
style(select): fix semicolons and vars
fix(*): protect calls to hasOwnProperty in public API

Objects received from outside AngularJS may have had their `hasOwnProperty`
method overridden with something else. In cases where we can do this without
incurring a performance penalty we call directly on Object.prototype.hasOwnProperty
to ensure that we use the correct method.

Also, we have some internal hash objects, where the keys for the map are provided
from outside AngularJS. In such cases we either prevent `hasOwnProperty` from
being used as a key or provide some other way of preventing our objects from
having their `hasOwnProperty` overridden.

BREAKING CHANGE: Inputs with name equal to "hasOwnProperty" are not allowed inside
form or ngForm directives.

Before, inputs whose name was "hasOwnProperty" were quietly ignored and not added
to the scope.  Now a badname exception is thrown.

Using "hasOwnProperty" for an input name would be very unusual and bad practice.
Either do not include such an input in a `form` or `ngForm` directive or change
the name of the input.

Closes #3331
revert: refactor($parse): only instantiate lex/parse once

This reverts commit 281feba4caffd14ffbd6dedfb95ad6415cff8483.

Since Lexer and Parser objects are stateful it is not safe
to reuse them for parsing of multiple expressions.

After recent refactoring into prototypical style, the instantiation
of these objects is so cheap that it's not a huge win to use
singletons here.
fix(ngScenario): remove redundant assignment

Closes #4315
feat($interval): add a service wrapping setInterval

The $interval service simplifies creating and testing recurring tasks.
This service does not increment $browser's outstanding request count,
which means that scenario tests and Protractor tests will not timeout
when a site uses a polling function registered by $interval. Provides
a workaround for #2402.

For unit tests, repeated tasks can be controlled using ngMock$interval's
tick(), tickNext(), and tickAll() functions.
fix(input): `false` is no longer an empty value by default

`checkboxInputType` and `ngList` directives need to have special logic for whether
they are empty or not.  Previously this had been hard coded into their
own directives or the `ngRequired` directive.  This made it difficult to handle
these special cases.

This change factors out the question of whether an input is empty into a method
`$isEmpty` on the `ngModelController`.  The `ngRequired` directive now uses this
method when testing for validity and directives, such as `checkbox` or `ngList`
can override it to apply logic specific to their needs.

Closes #3490, #3658, #2594
docs(angular.equals): fix simple typo

- JavasScript -> Javascript

Closes #4323
fix(ngTouch): add $event to ng-swipe

Existing documentation implies that an Event object should be available
as `$event` on swipe directives, which previously was only working for
`ng-click`.

Closes #4071
Closes #4321
docs(cookbook/adv_forms): simplify example

Pass the `$index` directly to the `removeContact` function, instead of
searching for it in an expensive forEach loop.

Closes #4320
fix(ngTouch): ngClick does not pass touchend event when jQuery is loaded

The trigger handler event in jqLite takes an event object as a second
parameter, but jQuery requires an array of parameters. This is causing
the touchend event to not come thtough in the click handler when jQuery
is loaded.
chore(travis): enable Firefox again

This updates karma-sauce-launcher plugin, which fixes the issue we were having (it uses the latest version of wd).

This reverts 1c18c93be138c59b5c1b73cae99cc52383272146
feat(tutorial): add step 12 of the phonecat tutorial
docs(jqLite): improve jqLite docs
docs(tutorial): fix style across tutorial steps