Updated Ruby code generation to be more compact

An example of the difference in output [is shown here](https://gist.github.com/nicksieger/0ce2ac350a0e0c2a3c50).

The code is more compact, and makes use of the read/write methods in the converters instead of spitting out the raw protocol calls.

This also updates the generation to handle multiple `throws` types and kills a bunch of unnecessary code.

Is this an improvement or does the refactoring/abstraction fly in the face of the original intent for Stark to create optimized, straightforward Ruby bindings?