refactor some of CertificateAuthority::Signer#sign and #selfsign to

break the methods down into more manageable sizes. still a bunch of work
to do to eventually allow refactoring of the spec tests but it's a
start.

Also fixed #selfsign so you can supply an array or an
R509::ASN1::GeneralNames object for san_names (just like you can with
the #sign method)