DRY improvement on enum generation
Return an empty string when a message contains no fields

It is possible for a `.proto` file to contain no fields, only enum
definitions. In this case we must suppress output of the get and set
functions, otherwise the resulting source code won't compile.
Ensure enum field names are not reserved words

Since the generator constructs field names in the form of atoms, using a
reserved word will result in a compile error. A simple single-quote
wrapping of these atoms fixes the problem, e.g. `not` -> `'not'`.