Move logic for starting and managing the web workers for crypto tasks into a separate class

Add webworker_pool module which provides a way to instatiate a pool
of Web Workers with a given script, dispatch requests to them and
receive promises for the responses.

This change also avoids creating new workers for each PBKDF2 request
and instead uses a single pool of 2 workers for all requests.