Parse CertificateRequest messages

Haven't figured out how to treat lists with variable/unspecified lengths yet, and the branch has some TODOs that are important before we try and make this work. But it's a start.

(We don't *have* to merge this yet, I just want to put it out there)
this indentation of the whole supported_signature_algorithms= section seems pretty wonky.

How about...

    supported_signature_algorithms=[
        SignatureAndHashAlgorithm(
            hash=HashAlgorithm(algorithm.hash),
            signature=SignatureAlgorithm(algorithm.signature),
        )
        for algorithm in construct.supported_signature_algorithms
    ],