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.
Yes, good point.