#671 - Allow for redirecting with the external auth strategies

Specifying a `redirectUrl` request parameter in the external
authentication strategies will redirect the user to that URL once they
return to the application. If no value is provided, `/me` will be used.

I also took the opportunity to streamline the external auth strategies
a little bit so we don't need to paste the complex passport boilerplate
in each strategy's REST file.

Currently supported strategies:
 * CAS
 * Facebook
 * Google
 * Shibboleth
 * Signed authentication
 * Twitter
#671 - Addressed Open Redirect issue in external authentication
Clearing redirectUrl cookie
#671 - Moved external authentication strategies to POST
Using object for upconfigConfigAndWait
Added a bunch of external authentication tests and improved CAS error handling
Bumping timeout for travis tests as the coverage seems to have slowed it down a bit
use the external oae-rest module
Removed activity migration for 3.0.0 to 4.0.0
Uploading test logs to Amazon S3 when a TravisCI build fails on master
Merge pull request #794 from simong/794-remove-activity-migration-code

Remove migration block in ActivityDAO
Merge pull request #821 from stuartf/external-restlib

use the external oae-rest module
Uploading Travis CI logs to s3/travisci/logs/hilary/
change config.previews.dir to config.previews.tmpDir
Expose Google Apps domain in config feed
Merge pull request #853 from stuartf/issue-853

Change `dir` to `tmpDir`
Merge pull request #851 from simong/travis-master-logs

Uploading test logs to Amazon S3 when a TravisCI build fails on master
Added a `resetAggregationForActivityStreams` to the activity aggregator

This allows you to halt activity aggregation for specific streams.

Each time an aggregate key for an activity stream is updated, we add the key in a sorted set of "active aggregate keys" for that stream.
Each time we insert a key in the set, we give it a rank of the current millis since epoch.
This allows us to easily remove aggregate keys that have expired.
The set itself also expires (maxExpiry seconds after the last time a key was inserted into it)
Resetting aggregation for a notification stream on marking notifications as read
Streamlined ActivityDAO's aggregate functions

* Refactored updateAggregateStatus into indexAggregateData and pass in the activity stream IDs
* Renamed delateAggregates into deleteAggregateData