Handle malformed CSR attributes and extension requests

When a CSR custom attribute or extension request was passed to a CSR for
inclusion, the resulting error would be raised up from the openssl error
and would not be handled by anything, resulting in error messages like
'first num too long'. Since this is all but useless from the perspective
of a user, this commit adds handling to CSR creation. Errors will be
wrapped to indicate which OID was causing the failure.