compiler: Silence false warning for unmatched return in 'after' clause

Because 26940a8c0c lifted code in the 'after' clause of 'try' to
a new function, Dialyzer could produce false warnings for code such
as:

   try
     ...
   after
     file:close(F)
   end.

Mark the the call to the generated function as 'compiler_generated'
to silence the warning.
configure: Prefer the system's zlib over own our zlib source

WxWidgets (used by the wx application) also uses zlib. To
ensure that the run-time system and WxWidgets use the same version
of zlib, use the system's zlib if present.

Also, the system's zlib may be specially optimized and thus faster
than our own generic source code.

We only use zlib versions that are "good enough". For now, that
means 1.2.5 or higher.

Remove the option --enable-shared-zlib and add the option
--enable-builtin-zlib to force the use of the built-in zlib.
crypto: Remove all processes from application crypto

and make it into a pure library application.
The processes where a legacy from the time when crypto was
implemented with a driver.
Merge branch 'egil/fix-bs_get_integer/OTP-11581'

* egil/fix-bs_get_integer/OTP-11581:
  erts: Fix bs_get_integer instruction
Merge branch 'egil/etp-commands/OTP-11582'

* egil/etp-commands/OTP-11582:
  erts: Update etp-commands with heap-dump
Merge branch 'bjorn/compiler/fix-lift-after/OTP-11580'

* bjorn/compiler/fix-lift-after/OTP-11580:
  compiler: Silence false warning for unmatched return in 'after' clause
Merge branch 'bjorn/fix-line-number-in-bs-exception/OTP-11572'

* bjorn/fix-line-number-in-bs-exception/OTP-11572:
  compiler: Correct line number in exception from binary construction
Merge branch 'bjorn/compiler/optimizations/OTP-11584'

* bjorn/compiler/optimizations/OTP-11584:
  Generalize optimizations of case statements
  Ignore warnings when running sys_core_fold after inlining
Update primary bootstrap
Test open types that may need more than 128 bytes
Teach asn1ct_func:call_gen/4 to quote the generated function name

The function name could contain hyphens or other characters not
allowed in non-quoted function names.
Improve construction of {cons,H,T} instructions

Make sure that we don't construct:

   {cons,{integer,I},{cons,{binary,B},T}}    - OR -
   {cons,{binary,B},{cons,{integer,I},T}}

but:

   {cons,{binary,[{put_bits,I,8,[1]}|B]},T}  - OR -
   {cons,{binary,B++[{put_bits,I,8,[1]}]},T}
Improve optimization of alignment for encoding
Factor out printing of verbose messages
Introduce asn1ct_gen:open_output_file/1
asn1ct_imm: Add a field for intermediate code for call_gen

It will greatly facilitate further optimizations if we include the
intermediate code (if available) in the call_gen tuple.
Keep type information in the apply intermediate instruction

To facilitate inlining of apply calls in the intermediate format.
asn1ct_imm: Add the {set,{var,Src},{var,Dst}} instruction

The {assign,Dst,Src} instruction is difficult to cope with when
doing advanced optimizations, since its source argument is a string
which may contain any expression.

Instead of changing how {assign,_,_} works, we will introduce new
instructions that can be used instead of {assign,_}, and remove
{assign,_,_} in a later commit when it is no longer used.

The first new instruction we will introduce is:

   {set,{var,Src},{var,Dst}}

It is useful for common sub-expression elemination among other things.
For the moment, we will only allow a variable as a source argument,
but we could extend it in the future to allow constants as well.
Generate intermediate code that is easier to optimize

Instead of generating:

   {assign,Dst,"element(2, Val)"}

generate:

   {call,erlang,element,[2,{var,"Val"}],Dst}

The latter expression is easier to understand since there is no
need to parse a string which may contain an arbitrary expression.

While at it, also discontinue the practice to treat "naked"
atoms as variables. A variable must always be given as {var,String}.
asn1ct_imm: Add the intermediate instruction {list,List,Dst}

The {list,List,Dst} instruction gives us as general way to
capture the building of something into a variable. That will make
inlining of intermediate code much easier.

It also allows us to eliminate the versions of the apply, call_gen,
and cond instructions that takes a target variable.

Also remove the optimization in the alignment optimization pass
that attempts to replace calls to complete/1 with calls to
iolist_to_binary/1. That optimization will not work anymore without
rewriting, so we will remove it in this commit and introcude a
more powerful optimization in a future commit.