Make sure statements that are added to a batch are prepared

When executing a prepared statement it will make sure that it's prepared on the connection before sending the request, but when a prepared statement is added to a batch it doesn't do this check, instead it raises a NotPreparedError. With this patch the batch will prepare any unprepared statements before sending the batch request.

This fixes #117
Fix Batch#add with synchronous prepared statements

The previous commit fixed a bug, but introduced another: if the statement was a synchronous one it failed...
Fix a small syntax issue in the Batch docs
Fixing varint and decimal encoding/decoding
Merge branch 'pr_118'
Version bump to v2.0.3
Decode custom types in metadata
Add an integration test for reading and writing UDTs
Parse and decode UDTs
Refactor TypeConverter to work better with arbitrary nested types

#bytes_to_{list,map,set} call #from_bytes instead of getting pre-resolved converters. This adds an extra method call, but it makes them work with UDTs.
Change some wording in the RowsResultResponse specs

Avoid calling UDTs "custom type", since they are only a special case of custom types.
Add support for UDTs nested in collections.
Move the custom type parsing to its own class

And rewrite it to handle nested types
Added support for decoding nested UDTs
Add UDT decoding to TypeConverter
Fix some bytes in a spec