Introduce concept of a 'key agent' which stores decryption keys and handles decryption

When a vault is unlocked, the keys are stored asynchronously with the
encryption agent which then handles future requests to decrypt item
contents.

Currently the only implemented key agent is one which uses a simple
in-memory ID -> key map.
Rename sha1opt.ts to pbkdf2.ts

The PBKDF2 implementation is the central purpose of this module.
WIP - Implement HTTP-server based key agent

Create a key agent which runs as a daemon process.
The key agent operates similarly to ssh-agent. New instances
of the 1pass CLI connect to it and can add keys to it.

When an agent is already running, new CLI instances can send
the agent requests to decrypt (and in future encrypt) item data.
Add functions for AES-128 encryption
Implement item data decryption in key agent
Use key agent in CLI app

The CLI app currently still requests the master password on every run
but is now using the key agent to store keys.
Avoid asking for master password if key agent already has key
Auto-expire keys after 2 minutes of inactivity in key agent
Add a parameter to runTests() to filter the tests which are executed

QUnit provides its own mechanism to do this by filtering tests
by module, but not at the test case level.
Add 'lock' command to the CLI to lock the vault

This causes the key agent forget all stored keys.
Add urlrouter dependency and unsuppress error output from 'make test-package'

 * Use npm's --quiet option to suppress non-error output from
   'npm install' instead of redirecting stderr