Some work to make JWTs easier to use.

These changes enable the following features:
  * trusted public keys can be provided in properties files (base-64 encoded)
    these should live in ~/.intermine/MINE.properties. These should take
    the form:

       security.publickey.ALIAS = BASE64ENCODEDKEY

  * Different strategies can be used to simplify configuration. The
    following strategies are supported (provided as values of the config
    property 'jwt.verification.strategy'):
     - NAMED_ALIAS: the default - issuer names must be explicitly mapped
       to key-store aliases using 'security.keystore.alias.$ISS'
       property values. Only pre-screened JWT issuers are allowed.
     - ANY: If the signature can be verified with any certificate in the
       key-store, all of which will be tried in a loop. This
       strategy is best when there is only one or two public keys
       supplied in property files. It requires all of the entries
       in the keystore to be suitable for verification.
     - WHITELIST: Similar to ANY, but only a whitelisted set of key
       store entries are used to verify the token's signature. This
       requires the set of entry names to be known in advance. The
       whitelist is read from the config property 'jwt.alias.whitelist'.