#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
Embeddable link test now uses mocked HTTP server

The unit test for checking whether a page is embeddable in OAE now uses
a mocked HTTP server rather than apereo.org, to avoid any intermittent
test failures due to network connections, changes on their end, ..
Removed activity migration for 3.0.0 to 4.0.0
Merge pull request #838 from simong/838-embeddable-test

Intermittent test failure: previews embeddable check
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)