Adding optional enum attribute to fields that represent an enum

This change does two things:

**First** the change to `mavgen_c.py` allows users of the generated C code to use the enum as the type. For example, currently, a function to set the base mode might look like this:

    void set_base_mode(uint8_t base_mode);

With this change, you can instead use the `MAV_MODE` enum directly as the type.

    void set_base_mode(MAV_MODE base_mode);

This makes the values that you should pass in as a base mode more explicit. It also helps modern development environments autocomplete the values in the MAV_MODE enum.

**Second** the change to the xml schema and mavparse.py allows generators to use the enum in their generated code. For example, a template could contain code that generates functions similar to the above:

    ${{fields:void set_${name}(${enum} ${name})}}