[edoc] Handle optional behaviour callbacks
Allow more type names

product/_, union/_, range/2 as well as tuple/N (N > 0), map/N (N > 0),
atom/1, integer/1, binary/2, record/_, and 'fun'/_ can now be used as
type names.
Modify representation of the map type

Types are represented by quadruples {type, LINE, Name, Args},
but maps were represented by five-tuples
{type, LINE, map_field_assoc, Dom, Range}.

Note: this is *not* about the quadruples used for representing
expressions, {map_field_assoc,L,K,V}.
[edoc] Remove pre-defined types dict(), digraph(), &c
edoc, syntax_tools: Don't fail on invalid UTF-8

As a temporary measure to ease the transition to default UTF-8
encoding, automatically fall back to the Latin-1 encoding (without any
warnings; the Erlang Compiler will emit a proper warning).

The intention is to remove this workaround in OTP 18 or 19.
edoc: Fix Map type information for docs
edoc, erl_docgen: Enhance internal map type format
whitespace fix to synch with OTP repository
run yecc on edoc_parser.yrl; don't keep edoc_parser.erl in source control
change license to dual Apache-2/LGPL