Support for user defined types

This is one of the things I had on my WIP but never got time to release in cql-rb. It adds support for encoding and decoding UDTs.

I'm not sure if this is the best implementation possible. I think UDTs in C* 2.1 felt pretty rushed, bolting it on using the custom types feature as it were. Because of this I had to implement a parser for the Thrift-style type definitions.

It looks like this is gone in v3 of the protocol, but that's not supported in C* 2.1, or have I missed that?

I'm not expecting you to merge this straight away, I just wanted to patch it up and see if it was even possible to get it to run in the new driver (it required very few changes, luckily).