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.
Add test case to syntax_tools

The added test case tests a bug when reverting maps in syntax tools.
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.
Merge branch 'maint'
Prepare release
Merge tag 'OTP-17.1'

=== OTP-17.1 ===

Changed Applications:
- asn1-3.0.1
- common_test-1.8.1
- compiler-5.0.1
- crypto-3.4
- debugger-4.0.1
- dialyzer-2.7.1
- diameter-1.7
- erl_interface-3.7.17
- erts-6.1
- hipe-3.11
- inets-5.10.2
- kernel-3.0.1
- mnesia-4.12.1
- observer-2.0.1
- reltool-0.6.6
- ssh-3.0.3
- ssl-5.3.5
- stdlib-2.1
- syntax_tools-1.6.15
- test_server-3.7.1
- tools-2.6.15
- typer-0.9.8
- wx-1.3

Unchanged Applications:
- cosEvent-2.1.15
- cosEventDomain-1.1.14
- cosFileTransfer-1.1.16
- cosNotification-1.1.21
- cosProperty-1.1.17
- cosTime-1.1.14
- cosTransactions-1.2.14
- edoc-0.7.13
- eldap-1.0.3
- erl_docgen-0.3.5
- et-1.5
- eunit-2.2.7
- gs-1.5.16
- ic-4.3.5
- jinterface-1.5.9
- megaco-3.17.1
- odbc-2.10.20
- orber-3.6.27
- os_mon-2.2.15
- ose-1.0
- otp_mibs-1.0.9
- parsetools-2.0.11
- percept-0.8.9
- public_key-0.22
- runtime_tools-1.8.14
- sasl-2.4
- snmp-4.25.1
- webtool-0.8.10
- xmerl-1.3.7