CORE-5557: added tables to store integrated webapp information and authorization tokens
CORE-5557: renamed the "authorization_tokens" table to "access_tokens" and added a couple of columns
CORE-5557: removed the integrated_webapps table, which is kind of extraneous
CORE-5557: added a service to accept OAuth 2.0 authorization codes from Agave
CORE-5557: fixed some problems with the access token persistence code
CORE-5557: use java.sql.Timestamp when storing the OAuth token expiration date in the database
CORE-5577: created a library to make it easier to obtain and refresh access tokens
CORE-5577: switched from java.util.Date to java.sql.Timestamp and fixed a problem in the code to refresh access tokens
CORE-5577: modified the oauth access code callback service to use authy
CORE-5558: created a new error code for temporary redirects
CORE-5558: temporarily modified the analysis listing service so that it always returns a 302 for the HPC category
CORE-5558: added a new database table for pending authorization requests
CORE-5558: added a way to store OAuth authorization request state information
CORE-5558: updated the header to pass back to the OAuth callback servlet when an access token is obtained
CORE-5546: added a function to determine if a token is expiring within a given number of milliseconds
CORE-5546: added support for connection timeouts and a refresh window stored in the token information
CORE-5546: added the ability to list Agave apps
CORE-5546: added a partially implemented DE Agave client for cases where an access token is not required
CORE-5546: added support for listing Agave apps
CORE-5546: added checks for missing query parameters to the oauth authorization callback endpoint