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.
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
Import and use lists:droplast/1 in v3_core/v3_kernel

Also imported lists:last/1, and removed the local definition.
Use lists:droplast/1 in orber/orber_interceptors.erl
lib/wx - Replace reverse(tl(reverse(L))) with lists:droplast/1
lib/ssh - Replace reverse(tl(reverse(L))) with lists:droplast/1
Issue a warning when a named fun is constructed but not used
Add a spec for a function that does not return
Shut off a dialyzer unmatched return warning

Dialyzer does not like list comprehensions for which the result is not
assigned to some variable (maybe anonymous).  In this particular case,
the comprehension, containing only a filter but no generator, was used
to save some lines, but IMO this type of code, while "cute", is not so
easy to comprehend.
Document maps-related abstract syntax trees

	{map,Loc,Fields}
	{map,Loc,Argument,Fields}

	{map_field_assoc,Loc,Name,Value}
	{map_field_exact,Loc,Name,Value}
Support named funs in erl_prettypr
Don't munge record and field names in cover

They are bare atoms, atoms or variables in the abstract format, there is no need to
pass them through munge_expr/2.
Properly munge record updates in cover

Trees {record,Line,Arg,Name,Fields} were not munged.
lib/mnesia/test/ - Replace reverse(tl(reverse(L))) with lists:droplast/1
Support maps in the debugger

A test is commented-out in map_SUITE:t_update_exact/1, waiting for a fixed
maps:update/3 function with correct integer/float semantics.
sys_core_fold_SUITE: For cleanliness, move id/1 to the end
sys_core_fold: Prevent case expressions from being evaluated twice

In e12b7d5331c58b41db06cadfa4af75b78b62a2b1, a bug was introduced
that would cause case expressions to be evaluated more than once
if there were aliases in the pattern. Example:

   X = Y = io:put_chars("some chars"),
   {X,Y}

That would be rewritten to code similar to (but in Core Erlang):

   X = io:put_chars("some chars"),
   X = io:put_chars("some chars"),
   {X,Y}

Make sure that we only evalute the expression once by doing a
transformation similar to (but in Core Erlang):

   NewVar = io:put_chars("some chars"),
   X = NewVar,
   Y = NewVar,
   {X,Y}

Reported-by: José Valim
Reported-by: Anthony Ramine