Avoid unicode in NIF compilation errors in unit tests

Set LC_ALL to C to avoid unicode characters in the any error messages
from the compiler.
Handle unicode in NIF compilation errors in unit tests

If there are any NIF compilation errors in the unit tests, print them
with ~ts instead of ~s, since the latter form crashes with badarg for
unicode text.
For NIFs, don't #include <erl_driver.h>

Only #include <erl_nif.h>. Including both gives this error, at least
for me now with Erlang/OTP 17.3 (line break
to improve readability):

.../include/erl_nif.h:LINE:COL: error: \
   'ERL_DRV_DIRTY_JOB_CPU_BOUND' was not declared in this scope
     ERL_NIF_DIRTY_JOB_CPU_BOUND = ERL_DRV_DIRTY_JOB_CPU_BOUND,
Set NIFs to be CPU bound when there is support for it

In 17.3, with dirty schedulers, it is possible to set the NIF to be
CPU bound, to avoid occupying a regular erlang scheduler overly long,
if the NIF takes long to execute. Set the flag to do that.
Allow ERL and ERLC override
Merge branch 'egcrowe/improve-make'
Prepare for 3.14.0
Improve the NIF flags to check for NIF version

Check for schedulers only if compiling against enif 2.7 or
later (which is Erlang 17.3)
Add the possibility to save tmp code for nif tests
For NIFs, avoid leaking memory in case of some errors

A C++ protobuf message structure was always allocated, but not freed
in all cases of error situations.
For NIFs, also do encoding in the NIF

Previously, when generating NIF code, the protobuf library was only
used for decoding. Now it is used for both encoding and decoding.
In NIF decoding, use enum symbols instead of int values

Prefix (local) aa_ variables with gpb_aa_ instead, to reduce the risk
of collision with an enum symbol.
Merge branch 'nif-on-dirty-scheduler'
Prepare for 3.15.0
Update README.nif-cc with info on dirty schedulers
Merge branch 'encoding-in-nif'
Prepare for 3.16.0
Add nif test for utf-8 conversions
Update docs to say that nifs can now also encode
Make the #field{} and #rpc{} record names redefineable

The #field{} and now also recently the #rpc{} record names are really
a bit too general and could clash with other code. They should ideally
already from the beginning have been prefixed with gpb, like
uncoordinated change, since they are since long ago part of the API.

Make it possible to override these two record names at compile-time,
with a preprocessor definition. Then if someone is in a situation with
clashing names, they can redefine it locally to get out of trouble.

In some future version, we might break backwards compatibility
and make #gpb_field{} and #gpb_rpc{} the default instead, and anyone
who still needs the old behaviour can preprocessor-define it back.