Make CacheProvider async with callback argument

Submitting a PR to make the CacheProvider added for InResponseTo validation asynchronous with a callback argument.

This changes the structure of the code a lot (the `validatePostRequest` and `processValidlySignedAssertions` functions) to handle the callback structure.

i feel this is needed as most 'real' implementation of a cache provider are going to be asynchronous in nature and therefore Passport-SAML needs to be able to support this.
This error handling looks like a problem to me.  That exception can be thrown from inside an asynchronous callback, in which case it wouldn't propagate to the parent of generateAuthorizeRequest, it would likely just crash the program.  On the other hand, I'm not keen on changing the interface to generateAuthorizeRequest().

Maybe we need to make this optional, so that generateAuthorizeRequest works as it does today, but also takes an optional callback argument -- and then that callback argument becomes mandatory if you are using an asynchronous cacheprovider.  (seems tempting to somehow exempt the inmemory provider from that)