Cache SCRAM-SHA-1 keys for current session

Caches the SCRAM-SHA-1 client key and server keys for the current session (keys are not persisted across reboots) in an LruCache.

If a cache miss is detected a new key pair is automatically generated. A cache miss will occur if the user changes the username or password, or if the server changes the salt or iteration count used for PBKDF2.

Potential ways to reduce cache misses further which could be researched (we'd need some sort of data gathering mechanism that people could opt into which would probably not be worth the time) include:
  - Storing all needed info in persistant storage (larger storage footprint)
  - Using a separate LruCache for each account to prevent accounts that use random salts from forcing other accounts out of the cache quickly (larger memory footprint)