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)
seems a bit weird that certificate_authorities is factored out into a separate struct but supported_signature_algorithms is inlined, I think it'd be better to keep consistent one way or another.