Generate Protocol module with read_/write_ methods for every type

This allows us to get rid of lots of code:
- use attr_accessor instead of a @field hash
- field.rb and converters.rb are bye-bye
- Struct::Field constants and read_struct are not needed
- Exception::Struct not needed
- write begin ... rescue ... end blocks for exception handlers
Write some more test cases for sending struct data across the wire