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.
Shell: expand 0-arity functions all the way to closing parenthesis

`erl` has tab completion for modules' exported functions but expands
only up to the opening paren. This commit closes that opening paren
in case the function is of arity zero and there is no other function with
the same name. It browses the lists of matches (a 2nd time) for Arity,
on complete match and then decides what to append.
Properly handle export_all when looking for undefined callbacks

Reported-by: Michele Miron
Fix erl_eval bug when erlang:'=='/2 is used in guards

Prior to this commit, erl_eval did not properly evaluate
erlang:'=='/2 and friends in guard clauses because it
always flattened it to a local call ==/2. This commit
removes the flattening logic while still normalizing old
guards style.
stdlib/lists: Add function droplast/1
This functions drops the last element of a non-empty list.

lists:last/1 and lists:droplast/1 are the dual of hd/1 and tl/1 but
for the end of a list.
Added tests for lists:droplast/1 to stdlib/lists_SUITE
Added documentation of lists:droplast/1
Update stdlib appup test to work for OTP release 17
Teach erl_scan to recognize '=>'
Extend erl_parse with the new map syntax

Example how to match or construct:

    #{ K1 => V1, K2 => V2 }

How to update:

    M#{ K => V }
Update erl_lint, erl_expand_records, sys_pre_expand for maps
erts: Add the size-testing guard BIF map_size/1
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.
stdlib: Update printing to handle Maps
erl_eval: Add functions to interpreter for maps
Teach erl_scan to recognize ':='
Extend erl_parse with two Op Map syntax

Example how to construct:

    #{ K1 => V1, K2 => V2 }

How to update:

    M#{ K1 => V1, K2 := V2 }

How to match:

    #{ K1 := V1, K2 := V2 } = M
stdlib: Fix erl_parse:parse_term/1

Did not handle Maps.
Update erl_lint, erl_expand_records, sys_pre_expand for Maps

Update erlang lint and syntax expand for #{ K := V }
stdlib: Teach erl_eval Maps ':=' exact operator