Ruby DSL to generate C types and marshalers

Squashed commit of the following:

commit 0a97ea13a5fc09e42c1abad443295172f6f8afa6
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 12 10:21:19 2012 -0500

    Add TODO section

commit 63ad11f822e938fc10cf59ca0e0c7b5753eeb5e7
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 12 01:13:39 2012 -0500

    Make tests more useful. This method will need a strong suite of system tests to stitch.

commit 70d150c930050aa8be19dd2743cc8b6e24fb013d
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 12 01:13:19 2012 -0500

    Remove print.

commit 14129f28b87349da20d20c572cff0ec98a35c5f7
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 12 01:11:17 2012 -0500

    unpackers done. still need to fix some tests

commit c51f8a7c4ee27b18440958421020a8f8d81cd0a9
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 23:46:41 2012 -0500

    added prototype for unpackers.

commit 2937f3d922ee295e8471db63d724a251ec97089d
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 22:34:26 2012 -0500

    WIP - packing functions written

commit 5bbcfe5a2a65703a89c1bd5d3270839fc47d26c3
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 22:34:09 2012 -0500

    Add util header

commit 02e1b8ca33ca337579f2dbb4749c6781fe598bd1
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 21:46:14 2012 -0500

    WIP - adding packing definitions.

commit 79b90b7905c732575d860b5d7b5c1fff0e4635ae
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 21:45:40 2012 -0500

    Adding a new error case needed for when enumerations are invalid.

commit e3f43e2fd5063f6684fbaecf04844ec5a77c344e
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 19:39:17 2012 -0500

    WIP - finishing up generator prototypes

commit 78daffd8a94ba85be24bfebc7cc489097f43f2f8
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 17:47:50 2012 -0500

    lots of additional generation code in place.

commit 38b827e7b77beded386979a2fa0314e9b856a13d
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 15:17:21 2012 -0500

    more error checking

commit 9343be74d65007c292b632849b2f879f99fc2ffa
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 15:08:02 2012 -0500

    lots more code generation

commit 88818da051e1e72aaacd5d8e1077e4bf1b9e2411
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 09:09:32 2012 -0500

    Start declaring C generation for atoms and composites.

commit 6643b56a7c8e7985b2bb0d75fe614be47a8ee1bf
Author: John Van Enk <vanenkj@gmail.com>
Date:   Tue Dec 11 09:09:18 2012 -0500

    Add a default_formatter definition.

commit 39fe779e5219c44e45f777a2cc796a8e16696f3f
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 23:38:26 2012 -0500

    Started adding generation.

commit 2c5f6e0e29d2c73bc47d09e9ad20942c1e64a54b
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 21:52:15 2012 -0500

    finish up group.

commit c9a72f90c1b3b307a5f6bf28f5a378fc421afa74
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 16:49:20 2012 -0500

    Add test for variable_array.

commit 005dc1bd81276300f7f98c9ccba2cefab674ecea
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 16:41:09 2012 -0500

    Filled out more pieces.

commit 11a76561e066ad08a5e5b51d45770e01891c737d
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 11:29:19 2012 -0500

    Drop Stream for now.

commit 2faf395d145acdd8969121b7369207411b0f4255
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 11:29:00 2012 -0500

    Fix file name.

commit 93b104d03ef6609f5645b0f2ff6cfd2cd0cfcc34
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 10:40:29 2012 -0500

    stub groups and streams

commit 0c383f48500d792c4a3f55dd1154411bc0f9cbf8
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 10:08:34 2012 -0500

    Add variable array basic support.

commit beffef522c0ae9270186e21cd1dc6aa29c8f4db5
Author: John Van Enk <vanenkj@gmail.com>
Date:   Mon Dec 10 09:32:47 2012 -0500

    Add fixed_array basics.

commit 9a4b3f22c48d5ae3737339154b3f8de0dd7cec74
Author: John Van Enk <vanenkj@gmail.com>
Date:   Fri Dec 7 11:36:31 2012 -0500

    Errors on duplicate field names.

commit a97c18be04fd04edd900435ce522d8d194927adc
Author: John Van Enk <vanenkj@gmail.com>
Date:   Fri Dec 7 11:35:27 2012 -0500

    handle nil

commit 145432d90eea029a2506b27340b014a346536d74
Author: John Van Enk <vanenkj@gmail.com>
Date:   Fri Dec 7 11:29:27 2012 -0500

    add composite fields.

commit e12ccdded2b93027ef40744a002f8a117d27f62b
Author: John Van Enk <vanenkj@gmail.com>
Date:   Fri Dec 7 09:53:41 2012 -0500

    added find_type(\!)

commit b3197843278e6e8f942a8c7582687b4af411f94a
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 23:30:04 2012 -0500

    Dropped useless test case

commit 27f5f6c498cbc8dabdba2f0ba55c0720adc20d20
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 23:25:14 2012 -0500

    move name/id functionality to BaseType.

commit 1f05101205c3ee0c363a2bd97133314f3571358a
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 23:20:15 2012 -0500

    move more logic to super

commit 5da4b89c727798afc6a9b19df5387ea8f48ee37c
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 23:14:39 2012 -0500

    Added instance registration.

commit 94795bdc4741bacdbf0389a2ad0ac896fe4c0f6e
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 22:07:20 2012 -0500

    added basic start to composites.

commit 243f5054e26891876a737c083deb8aa8fcfec969
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 21:40:08 2012 -0500

    More fully featured enum.

commit efcf9cb5761a678e0e919e7ab55a05f8a5572b4c
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 14:26:38 2012 -0500

    WIP - add Atom and Enumeration. Define common pieces and tests.

commit d0b221bfc8a14f008eaca660fb7e70c4c36ca027
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 14:21:05 2012 -0500

    Move old things. Add spec_helper.

commit 2a55672527bfee5353580bb4e05d1517fa5f3203
Author: John Van Enk <vanenkj@gmail.com>
Date:   Thu Dec 6 10:53:31 2012 -0500

    Started adding definitions for the packers.

commit 6aad01f6ce00961e3c649423a9580a490b711a85
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 17:24:35 2012 -0500

    Definition of group struct.

commit 00a5e0d325e2169b1eb467f4f1bd22a2ce326dd7
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 16:47:11 2012 -0500

    Merge mixins from master

commit 1842518cad4009a0ab144860d85143d2cca76db7
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 16:43:17 2012 -0500

    WIP - start generating enums

commit c84bae3c2144a48fbad5b527a0ae7d2cf85d5cbd
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 16:35:48 2012 -0500

    WIP - adding group support.

commit 9195e6e7ddf7270114c46cf0c193389fa41f07b9
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 14:14:11 2012 -0500

    Add unpackers.

commit 21c0cc81fd1b1c2dc9278927b5cda3fed36326e5
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 12:45:46 2012 -0500

    WIP - Generating unpacker for Composites.

commit abcd04b3ea834db37139618f104fdbb399ee5391
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 12:29:31 2012 -0500

    Add support for packing variadic data.

commit 3f000065fa1834627ae78e55a2d3c9258e8a3f26
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 10:57:29 2012 -0500

    Let's try this approach.

commit dc6cda874226d192ee60cd2e9076e2a634893ab0
Author: John Van Enk <vanenkj@gmail.com>
Date:   Wed Dec 5 10:37:38 2012 -0500

    Trying something else