Better error checking on private key and csr.  Also, pull in file names ...

...instead of pointers.
I find `self.csr_file` name very confusing, since as of this PR it's actually the contents of the CSR, not the file. Can we have just `self.csr`? Same for `self.key`.

Could you create a docstring for `__init__` with appropriate type annotations while we are at it?