docs(element): add param docs for isElementPresent

Closes #1257
fix(locators): locators should use the root element provided in config

Previously, locators used 'document' as the root for their search. After this
change, they will use the root element provided in the config file -
`config.rootElement`. This will make sure behavior is correct if there are
multiple angular apps on one page, and also enables the getTestability
path, because that requires a root element under an ng-app.
refactor(mockmodules): add a base mock module to turn on debug info

This will be necessary after Angular commit
https://github.com/angular/angular.js/pull/8430

It should be a noop (which adds one webdriver command) for versions of Angular
before that one.
style(protractor): fix up jshint errors - semicolon and missing global
fix(webdriver-manager): always use https for downloading webdriver binaries

This fixes issues with unzipping - see #1259
docs(debugging): add how to launch selenium
chore(website): fix watching for scope changes to update the souce code

And add unit tests for directive.
chore(dgeni): Upgrade dgeni to 0.4.0.
feat(protractor): allow file:// baseUrls

Modified protractor to support testing node-webkit by using string concatenation vs url.resolve() when the baseUrl begins with file://

Closes #1266.
feat(cucumber): process the Cucumber 'coffee' param
docs(readme): add links to the Protractor website in README.md

There is no way finding the great website from the github project.
chore(release): version bump and docs for 1.2.0
fix(website): Add href to menu items.
feat(webdriver-manager): ignore ssl checks with --ignore_ssl option

Allow ability to ignore SSL checks when downloading webdriver binaries.
Usage: `webdriver-manager update --ignore_ssl`
chore(angular): upgrade angular to version 1.3.

This change updates Protractor's test application from 1.2.9 to 1.3.0-r0.

There is a significant behind-the-scenes change in the implementation of locating
elements and waiting for the page to be stable. If you are updating your application
to Angular 1.3, you may run into some changes you will need to make in your tests:

 - `by.binding` no longer allows using the surrounding `{{}}`. Previously, these
    were optional.
    Before: `var el = element(by.binding('{{foo}}'))`
    After: `var el = element(by.binding('foo'))`

 - Prefixes `ng_` and `x-ng-` are no longer allowed for models. Use `ng-model`.

 - `by.repeater` cannot find elements by row and column which are not children
   of the row. For example, if your template is
   `<div ng-repeat="foo in foos">{{foo.name}}</div>`
   Before: `var el = element(by.repeater('foo in foos').row(2).column('foo.name'))`
   After: You may either enclose `{{foo.name}}` in a child element or simply use:
   `var el = element(by.repeater('foo in foos').row(2))`
chore(testapp): add command line flag to testapp to switch angular version

The testapp may now be started with
`testapp/scripts/web-server.js --ngversion 1.2.9` to change the
version of Angular used in the app. Versions must be stored in
`testapp/lib/angular-v<version>`.

Closes #1258
docs(release): add a note to test against angular 1.2.x when releasing
feat(protractor): allow advanced features for ElementArrayFinder

changed ElementFinder as a subset of an ElementArrayFinder.

This enables actions on ElementArrayFinders, such as:
`element.all(by.css('.foo')).click()`

The function `filter` now returns an ElementArrayFinder, so you may also do:
`element.all(by.css('.foo')).filter(filterFn).click()`

or

`element.all(by.css('.foo')).filter(filterFn).last().click()`
fix(element): isPresent should not throw on chained finders

Now, `$('nonexistant').$('foo').isPresent()` will return false instead
of throwing an error. This change also adds tests that ensure
that catching errors from promises works as expected.
refactor(tests): move equivalency function to the elements spec file

It makes more sense there than in locators.