#679 PLCgen: Avoid getting double underscore characters in generated names.
Rewrote sanitizing names in the name generator, as doing things one character at a time is difficult to understand.
Name generator kept the same kind of generated names, except that _[0-9]
now cannot happen while sanitizing a name, which means the _[0-9]+
suffix for making names unique still works.
Cleaned up the keyword list, and extended it with functions and function blocks. Reading that by individual commits is recommended.
Addresses #679