Fix generated NIF code for enums in messages

When enums are declared inside a message, the enumerator symbols are
prefixed with the message name and enum name (separated by
underscores) in the C++ code generated by Google's protoc.
Adapt to that.

Slightly adapted the solution provided by Louis-Philippe Gauthier.
Fix generated NIF code for strings_as_binaries

Type mismatch: invalid conversion from unsigned char* to const char*.

Thanks to Louis-Philippe Gauthier for providing a solution.
Prepare for 3.17.4