Introduce the attribute -optional_callbacks in the context of behaviours
[syntax_tools] Let erl_syntax:concrete() accept the F/A syntax

Note: `arity_qualifier` nodes are recognized. This is to follow The
Erlang Parser when it comes to wild attributes: both {F, A} and F/A
are recognized, which makes it possible to turn wild attributes into
recognized attributes without at the same time making it impossible to
compile files using the new syntax with the old version of the Erlang
Compiler.
Fix reverting map in syntax_tools

There was a copy-paste bug in erl_syntax when running
e.g. erl_syntax:revert_forms, affecting maps. Instead of getting
Key/Value you got Key/Key in the resulting abstract form.
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.
syntax_tools: Fix is_literal/1 for binary
syntax_tools: Teach Maps to erl_syntax

Affected functions:

* erl_syntax:abstract/1
* erl_syntax:concrete/1
* erl_syntax:is_leaf/1
* erl_syntax:is_literal/1
synch vsn.mk with OTP repo
don't add ./ebin to path when building docs
change license to dual Apache-2/LGPL