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.
Fix a -callback attribute bug

sys_pre_expand used to crash. There is no known reason to
allow -callback attributes with explicit module.
Disallow '_' as type variable

"... when _ :: ..." used to compile, but Dialyzer crashed.
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}.
[stdlib] Simplify some linter warnings about specs

Use F/A rather than M:F/A for local functions.