Adds "REQUIRES PRIVATE KEY" callback

I have encountered this use-case while using the library so I had to write this patch for our use. Maybe other people can use this functionality as well.

In some situations the private key is not directly available via
filesystem (for example, when stored on a smartcard or directly in memory).
If this is the case, the user can set the private key filepath to NULL and
expect this callback reason to set the key directly via openSSL
library calls.