Structured uavobjects

This push deals with the reorganization of the GCS so it should merge cleanly into next again.  You might want to make a second branch if you want to keep a version that will cleanly merge into OP upstream too.

For reference it still doesn't seem to be generating the right C structure, or maybe this is changed by intent.  For example this is the output of accels

    public:^M
        // Field structure^M
        typedef struct {^M
    typedef struct {^M
        float x;^M
        float y;^M
        float z;^M
        float temperature;^M
    } __attribute__((packed)) AccelsData;^M
    ^M
    ^M
    } __attribute__((packed)) DataFields;^M

The nested structure inside datafields ends up breaking a lot of GCS code.  Do we really want/need it? The getData/setData method can handle this though to keep the GCS code consistent but still all the structure definitions would become

    Accels::DataFields::AccelsData which is a bit verbose

For reference this is the previous structure

    public:^M
        // Field structure^M
        typedef struct {^M
            float x;
            float y;
            float z;
            float temperature;
    ^M
        } __attribute__((packed)) DataFields;^M