Refactor all struct types to #to_blob/#from_blob pattern

I was never happy with the nasty mess that was all of the types that
modelled the TLS structs that made up the internals of the CT protocol.
They were a pain to work with, consumed and produced far too many "magic
strings", and the constructors... *shudder*.

Now, everything has a standard `from_blob` class method, and has a `to_blob`
instance method.  In addition, all of the accessors emit and consume
structured objects (either other structs, or standard classes like Time and
OpenSSL::X509::Certificate) which makes it easier to work with the
deeply-nested nature of these things (as well as ease up on the sanity
checking required).

All in all, a very worthwhile expenditure of a few hours.