Add support for encoding and decoding custom type values

They will be decoded as byte strings, and are expected to be passed in as byte strings
Clarify a RowsResultResponse spec
Add support for nil UDT values
Fix the encoding of nil valued collections
Include the collection type when raising errors about the value not being enumerable
Refactor the UDT encoding tests
Refactor the type encoding specs

Extract a function that takes a type and a value and returns the encoded bytes
Sprinkle some DSL on the encoding specs