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.
Replace fixed-length list-nodes by tuple-nodes
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.
fix -Wno_behaviours doc error in dialyzer man page

The description of the -Wno_behaviours in the dialyzer man page incorrectly
includes a "***" footnote marker, indicating that it's an option that turns
on a warning rather than turning it off. Since the option actually turns
off a warning, remove the marker. This fix makes the documentation match
that obtained from dialyzer --help.
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
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
ssh: Fix dialyzer type specs and documentation

Similar to d9ebfb8. The wrong specs were leading to dialyzer warnings
like this in our application since R16B03:

The pattern 'ok' can never match the type {'error',_}.
The pattern {'error', {'already_started', 'ssh'}} can never match the type 'ok'.
The pattern {'error', _} can never match the type {'open_error',_,string(),string()}.
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.
compiler: Strengthen Maps tests
compiler: Strengthen listings tests
v3_core: Annotate list comprehensions to help out dialyzer
asn1ct_tok: Check return value from file:close/1

This will silence a dialyzer warning for unmatched return.