fix(e2e): don't assume accountInfoLabel is present
fix(e2e) correct spelling of "loginIfNecessary"
fix(e2e): handle "name" property of Page object constructor correctly

Page object constructors were using the "name" property to indicate the
"code-ish" name for them when they were added to World.

The "name" property of a constructor is off limits and so instead we
had the constructor's actual name being used.

Use "pageName" property to define pages' names in order to avoid this
conflict.
starter files for ask tests
"ask" tweaks
fix(e2e): rename scenario

Rename a scenario that no longer described what it was testing.
e2e: getElementIfPresent function

Issues with protractor isPresent/isPresent element make it safer to
do this ourselves. Make a function that returns a promise of
an element or null, depending on if the locator points to a present
element.
e2e: work around cucumber next callback -> notifyOk

Cucumber's next function isn't promisified and thus considers a
truthy parameter to be an indicator of failure.

This is not an issue when we are dealing with chai-as-promised
expectations because they have .and.notify support.

Create a sugar function to be used when we don't have an expectation so
that any value which happens to be resolved in by a steps function
does not trick Cucumber into thinking something went wrong.
e2e: make use of notifyOk
e2e: remove "returnNull"

Now that notifyOk is implemented, step authors need no longer worry
about truthy return values, so this function isn't needed.
make use of notifyOk by ceasing to worry about returning promises
from functions
fix(e2e): locator/property fixes

* cooerce userName to boolean in isLoggedIn
* don't try to click missing element in accountDropdownOpen
* don't try to access logoutButton before opening accountDropdown
* use getElementIfPresent in accountInfoElement property
fix(e2e): don't try to reassemble tags CLI parameter

Pulling apart the tags cli parameter on the basis of commas hides the
more useful usecase of being able to run more than one specific tag, due
to the way protractor handles the expression. Thus, leave tags as a
single value, letting the user write any single expression in cucubmer's
language for specifying tags (e.g. https://github.com/cucumber/cucumber-js/blob/0d445d233270115643410b91ec7d9396067092e2/lib/cucumber/cli.js#L35)
e2e: tests for ask
e2e: authenticateAs, callback cucumber with errors

* authenticateAs new algorithm;
* pass errors in tests (as opposed to unmet expectations) back to cucumber as errors so that they are noticed/traced,etc.
e2e: promise handling (cuurrentPage -> self, use post/invoke)

For all functions/properties on PageBase, return "self" if there is no
particular element relevant to return. This simplifies writing chained
promises.

Use the Q invoke and post functions where we can to avoid more
complicated binding code.

Also fix errors where our bindings were presently "off".
browser: update `q` library to 1.1.2
e2e: separate action functions from element handlers in PageBase

Action functions should be wrapped in a Q promise so that its methods
may be used for sugar.

Element handlers should *not* be wrapped in Q so that webdriver chaining
works as expected.
e2e: ask submit test (in progress)
e2e: tag ask test as @broken