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.
It looks like the only direct caller of `generateAuthorizeRequest` is `getAuthorizeUrl` which does have a callback parameter.  This makes it seem safe to add callback as an arg to `generateAuthorizeRequest` and not throw the error, but instead invoke the callback in this scenario.  You agree?