Small code generation fixes

- Reduce code repetition in enum generation flow.
- Do not generate a "message" section if there are no fields; this way we can generate enum wrappers but leave out field-specific code that causes compile errors when there are no message fields to set or get.
- Protobuf enum names could possibly be Erlang reserved words, so wrap these reserved enum names in single quotes, e.g. `not` -> `'not'`.