c_enum: Use _Static_assert to verify int size enums

This avoids adding a special enum value that explicitly forces the enum
to be the same size as an int. Adding an extra enum makes it awkward to
enable gcc/clang -Wswitch warnings which are really useful for reminding
you when you've forgotten to handle a particular enum value in a switch
statement; a relatively common source of bugs.

Instead we require that the compiler be passed the appropriate flags to
disable packing enums if necessary.