Preserve _ prefixed to variable names when generating erlang

Completely backwards compatible, but means we can enable
``warnings_as_errors``, and name unused variables with an underscore.

Otherwise it's impossible to use ``warnings_as_errors`` if you need to ``for`` loop over a proplist with keys/vals and you only want the vals. (for example).

See 2 new tests for the details