Bluetooth: Refactoring hci_conn_accept

Since this function is only used by sco, move it from hci_event.c to
sco.c.
Bluetooth: Add option for SCO socket mode

This patch extends the current SCO socket option to add a 'mode' field. This
field is intended to choose data type at runtime. Current modes are CVSD and
transparent SCO, but adding new modes could allow support for CSA2 and fine
tuning a sco connection, for example latency, bandwith, voice setting. Incoming
connections will be setup during defered setup. Outgoing connections have to
be setup before connect(). The selected type is stored in the sco socket info.
This patch declares needed members, modifies getsockopt() and implements
setsockopt(). Setting the mtu is not supported.
Bluetooth: Use mode to create SCO connection

When an incoming SCO connection is requested, check the selected mode, and
reply appropriately. Mode should have been negotiated previously. For example,
in case of HFP, the codec is negotiated using AT commands on the RFCOMM
channel. This patch only changes replies for socket with defered setup enabled.
Bluetooth: Parameters for outgoing SCO connections

In order to establish a transparent SCO connection, the correct settings must
be specified in the SetupSynchronousConnection request. For that, a bit is set
in ACL connection flags to set up the desired parameters. If this bit is not
set, a legacy SCO connection will be requested.
This patch uses T2 settings.
Bluetooth: Fallback transparent SCO from T2 to T1

When initiating a transparent eSCO connection, make use of T2 settings at
first try. T2 is the recommended settings from HFP 1.6 WideBand Speech. Upon
connection failure, try T1 settings.
To know which of T2 or T1 should be used, the connection attempt index is used.
T2 failure is detected if Synchronous Connection Complete Event fails with
error 0x0d. This error code has been found experimentally by sending a T2
request to a T1 only SCO listener. It means "Connection Rejected due to
Limited resource".
Bluetooth: Add enhanced mode for SCO sockets

The enhanced mode is designed to support CSA2 specification. To set it, caller
must have made sure that requested settings are supported by hardware. This
can be done by reading hardware options using management commands.
Bluetooth: Fix hci_timeout in case of defer setup
Bluetooth: declare Core Spec Addendum 2 commands

CSA2 specification declares 3 additional HCI commands:
1. Enhanced Setup Synchronous Connection,
   This command can add or modify a synchronous connection.
2. Enhanced Accept Synchronous Connection Request,
   This command is used to accept a synchronous connection.
3. Read Local Supported Codecs
   This commands retrieves supported codecs on an adapter.