Move let expressions into sequences

The Core Erlang compiler simplifies let expressions by moving them
into their argument when it is another let or a case expression.
It can then perform other optimizations such as removing the let
expressions altogether, sometimes saving BEAM registers later in
the process.

This commit teaches sys_core_fold how to move let expressions into
sequence arguments.
Merge branch 'nox/move-let-into-seq/OTP-11056'

* nox/move-let-into-seq/OTP-11056:
  Move let expressions into sequences
Remove the "coding: utf-8" comment from all Erlang source files
Convert XML files to UTF-8, where needed
Convert XML files to UTF-8
Merge branch 'hb/unicode/OTP-10907'

* hb/unicode/OTP-10907:
  otp_SUITE: Add test cases to ensure that OTP conventions are obeyed
  Convert XML files to UTF-8
  Convert XML files to UTF-8, where needed
  Remove the "coding: utf-8" comment from all Erlang source files
  Update primary bootstrap
  Change the default encoding of Erlang files to UTF-8
Merge branch 'maint'
Merge remote-tracking branch 'upstream/maint'

Conflicts:
	bootstrap/lib/stdlib/ebin/beam_lib.beam
	lib/public_key/test/erl_make_certs.erl
Merge branch 'maint'
Merge branch 'maint'

* maint:
  compiler: Correct liveness optimization for wait/1
Forbid unsized fields in patterns of binary generators

It makes no sense to be able to do `<<...,Rest/binary>> <= ...` in a
comprehension. The related Dialyzer test is removed.
Simplify v3_core's translation of bit string generators

Now that unsized binary segments are forbidden in patterns of bit string
generators, v3_core:append_tail_segment/2 does not need to check for an
existing unsized tail segment and can thus be changed to a simple '++'/2
call.
Merge branch 'maint'
Merge tag 'OTP_R16B01'

The R16B01 release

Conflicts:
	lib/sasl/vsn.mk
Merge branch 'nox/illegal-bitstring-gen-pattern/OTP-11186'

* nox/illegal-bitstring-gen-pattern/OTP-11186:
  Bootstrap added
  Simplify v3_core's translation of bit string generators
  Forbid unsized fields in patterns of binary generators
Merge branch 'maint'
Lift 'after' blocks to zeroary functions

If 'after' blocks are not lifted, the ids of functions in their bodies
must be killed and it can make stacktraces more confusing than they
should. We lift them to zeroary functions to avoid unnecessary killings
and duplication of code.
Merge branch 'maint'

Conflicts:
	bootstrap/lib/compiler/ebin/cerl_inline.beam
Merge branch 'maint'

Conflicts:
	bootstrap/lib/compiler/ebin/v3_core.beam
Merge branch 'maint'

* maint:
  Fix compiler crash for 'B and B' guard