Correct the name of a compiler option and fix the corresponding warnings

The option `warn_export_vars` was erroneously written as `warn_exported_vars`
in Makefiles of dialyzer and typer. As a result, `erlc` was silent about such
warnings (why on earth doesn't it complain on unrecognized options??) which
were corrected as part of this change.
hipe, dialyzer: Fix a bug concerning opaque types

Dialyzer sometimes output warnings like

  Attempt to test for inequality between a term of type 'false' and a
  term of opaque type 'false' | gb_set()

The reason was that erl_types:t_inf/3 when called from
erl_types:t_find_unknown_opaque() did not return 'false' but found the
mismatch. It should not return the mismatch unless the intersection is
empty ('none').

Thanks to Shayan Pooya [shayan@liveve.org] for pointing out the bug.
Introduce the attribute -optional_callbacks in the context of behaviours
dialyzer: Add Maps type mismatch test
Remove pre-defined types dict(), digraph(), &c

The pre-defined types array(), dict(), digraph(), gb_set(), gb_tree(),
queue(), set(), and tid() have been removed.
hipe: fix a bug concerning typed record fields

When checking typed record fields Dialyzer failed to handle
types containing remote types.

Thanks to Erik Søe Sørensen for reporting this bug.
Merge branch 'maint'

* maint:
  hipe: fix a bug concerning typed record fields
hipe: fix a bug concerning typed record fields
Merge branch 'maint'

* maint:
  hipe: fix a bug concerning typed record fields
Merge branch 'egil/fix-maps-pretty-layout/OTP-11947' into maint

* egil/fix-maps-pretty-layout/OTP-11947:
  dialyzer: Add Maps type mismatch test
  hipe,compiler: Fix Map literals pretty printing
Merge branch 'maint'
[dialyzer] Correct docs about options
Merge branch 'maint'

* maint:
  [dialyzer] Correct docs about options
[dialyzer] Fix handling of literal records

This ticket is about records in Erlang code, and when to check the
fields against the (optional) types given when defining records.

Dialyzer operates on the Erlang Core format, where there are no trace
of records. The fix implemented is a Real Hack:

Given the new option 'dialyzer' erl_expand_records marks the line
number of records in a way that is undone by v3_core, which in turn
inserts annotations that can be recognized by Dialyzer.
[dialyzer] Use the  option 'dialyzer' to control the compiler
[dialyzer] Correct a doc bug introduced in 0b041238
doc: Fix broken links
Merge branch 'maint'

* maint:
  [dialyzer] Correct a doc bug introduced in 0b041238
  [dialyzer] Use the  option 'dialyzer' to control the compiler
  [dialyzer] Fix handling of literal records
Merge branch 'egil/fix-doc-links' into maint

* egil/fix-doc-links:
  doc: Fix broken links in Installation Guide
  doc: Fix broken links
Merge branch 'maint'