Avoid single field record/map accesses

Reading a single field's value, using the syntax X#{key} was not
supported, neither in the evaluation pre-release of maps, nor in the
rc1 for Erlang/OTP R17. So to make maps usable short-term at least,
change the generated code to access such fields using matches instead
of single field accesses. The same applies to records.

Such single field access were generated only for some cases: when
messages were passed around as recods/maps instead of as params.
(Passing as params is much more common because of performance.)

Performance appears to be unaltered by this new layout of the
generated code. The benchmarks results in virtually identical
performance figures before and after the change.
Prepare for 3.9