Eliminate the required_email module!

* Make the authenticate handle everything.

fixes #1873
Remove the remnants of the old requiredEmail module

fixes #1873
Cleanup, 'cause as @6a68 says, my class names sucked.

* isRequiredEmail=>isEmailImmutable
* requiredEmail=>emailImmutable
* isNotRequiredEmail=>isEmailMutable

Other changes
* Remove the "#back" and "#required_email" CSS, elements with these ids are nowhere to be found in any template.
* Use high level "testElementHasClass" and "testElementNotHasClass" tests instead of low level equivalents.
Update the selector for forgotPassword.
Merge pull request #3630 from shane-tomlinson/refactor_eliminate_required_email

Refactor eliminate required email

@6a68 gave the r+, I cleaned up the class names. merging. Thanks for the collaboration @6a68!
Move context request from xhr.js to network.js
Clean up

Get rid of duplicate state held in top level variables and within context.
publish context_info with the full updated context, not just the passed in context.
Add is* functions to helpers, use isObject to ensure setContext is called with valid parameters.

* add isArray, isFunction, isObject, isString
Clear all timeouts between tests to prevent cross-test pollution.