[syntax_tools] Introduce Unicode support for Erlang source files

Not complete.
Unicode in wild attribute doesn't work.
No support for Unicode regarding Igor stubs.
syntax_tools: Remove support for packages
Remove support for the query keyword and query expressions
Extend char() to Unicode characters

The code related to the introduction of unicode_string() and
unicode_char() has been removed. The types char() and string() have
been extended to include Unicode characters.

In fact char() was changed some time ago; this commit is about
cleaning up the documentation and introduce better names for some
functions.
Make Unicode corrections
[stdlib] Correct handling of Unicode filenames
Use ~ts for filenames
Fix reverting of implicit funs

Implicit funs parts in plain AST are no longer in concrete form since
Erlang/OTP R15.
Fix transformation of implicit funs in igor

Function erl_syntax_lib:analyze_implicit_fun/1 should not be called on
implicit external funs, as their parts can contain variables instead of
atoms and integers.
Remove a useless function clause in erl_syntax_lib
EEP 37: Funs with names

This adds optional names to fun expressions. A named fun expression
is parsed as a tuple `{named_fun,Loc,Name,Clauses}` in erl_parse.

If a fun expression has a name, it must be present and be the same in
every of its clauses. The function name shadows the environment of the
expression shadowing the environment and it is shadowed by the
environment of the clauses' arguments. An unused function name triggers
a warning unless it is prefixed by _, just as every variable.
Variable _ is allowed as a function name.

It is not an error to put a named function in a record field default
value.

When transforming to Core Erlang, the named fun Fun is changed into
the following expression:

    letrec 'Fun'/Arity =
               fun (Args) ->
                       let <Fun> = 'Fun'/Arity
                       in Case
    in 'Fun'/Arity

where Args is the list of arguments of 'Fun'/Arity and Case the
Core Erlang expression corresponding to the clauses of Fun.

This transformation allows us to entirely skip any k_var to k_local
transformation in the fun's clauses bodies.
17.0 anchor and broken links fixes
Add option to make erl_tidy print to screen instead of to a file.
edoc,syntax_tools: Teach Map understanding
Fix representation of named funs in syntax_tools

A named fun's name is a variable name, its type in syntax_tools is named_fun_expr.
Complete support of maps in erl_syntax

	map_expr/1
	map_expr/2
	map_expr_argument/1
	map_expr_fields/1

	map_field_assoc/2
	map_field_assoc_name/1
	map_field_assoc_value/1

	map_field_exact/2
	map_field_exact_name/1
	map_field_exact_value/1
Support maps in erl_prettypr
Support named funs in erl_prettypr
Mention map trees in erl_syntax:type/1 documentation
Deprecate pre-defined built-in types

The types array(), dict(), digraph(), gb_set(), gb_tree(), queue(),
set(), and tid() have been deprecated. They will be removed in OTP 18.0.

Instead the types array:array(), dict:dict(), digraph:graph(),
gb_set:set(), gb_tree:tree(), queue:queue(), sets:set(), and ets:tid()
can be used. (Note: it has always been necessary to use ets:tid().)

It is allowed in OTP 17.0 to locally re-define the types array(), dict(),
and so on.

New types array:array/1, dict:dict/2, gb_sets:set/1, gb_trees:tree/2,
queue:queue/1, and sets:set/1 have been added.