Allow all auto imports to be suppressed at once

This patch introduces the no_auto_import attribute:

    -compile(no_auto_import).

Useful for code generation tools that always use the
qualified function names and want to avoid the auto
imported functions clashing with local ones.

Implementation wise, we chose to have a special flag
'all' to avoid doing many set lookups when checking for
suppression.
beam_except: Eliminate compiler crash

Code such as:

  bar(X) ->
    case {X+1} of
      1 -> ok
    end.

would crash the beam_except pass of the compiler.

The reason for the crash is that the '+' operator would add a line/1
instruction that the beam_except pass was not prepared to handle.

Reported-by: Erik Søe Sørensen
Import and use lists:droplast/1 in v3_core/v3_kernel

Also imported lists:last/1, and removed the local definition.
Update erl_lint, erl_expand_records, sys_pre_expand for maps
Introduce a representation for maps in Core Erlang
Implement support for maps in the compiler

To make it possible to build the entire OTP system, also define
dummys for the instructions in ops.tab.
compiler: Fix stack register reordering

Can now handle {list [reg()]} elements in instructions.
compiler: Fix no basic blocks for maps
compiler: Handle literals, not just atoms, as keys in maps
compiler: Check for duplicate key literals in Map

If a literal key already is present in a Map update the latter should be used.
Warn for previous duplicates in the Map.
compiler: Fix multiple same keys
compiler: Fix sorted keys in put_map instruction

All pairs in a Map needs to be in strict ascending key order.
erts: Add the type-testing guard BIF is_map/1

To add a type-testing guard BIF, the following steps are needed:

* The BIF itself is added to bif.tab (note that it should be declared
  using "ubif", not "bif"), and its implementation to erl_bif_op.c.

* erl_internal must be modified in 3 places: The type test must be
  recognized as guard BIF, as a type test, and it must be auto-imported.

* There must be an instruction that implements the same type test as
  the BIF (it will be used in guards). beam_utils:bif_to_test/3 must
  be updated to recognize the new guard BIF.
Update erl_lint, erl_expand_records, sys_pre_expand for Maps

Update erlang lint and syntax expand for #{ K := V }
Extend representation for maps in Core Erlang
compiler: Implement support for exact Op in Maps

The syntax is handled upto v3_kernel where it is reduced to
previous behaviour for construction and updates. Meaning,
the ':=' operator is handled exactly as '=>' operator.
sys_core_fold: Remove optimization that has become invalid

With the => and := operators for updating maps, this optimization is
no longer valid.
Pass the map pair operators through to the v3_codegen pass
compiler: Implement different instructions for => and :=
compiler: Teach Maps understanding to inliner