GATT: Remove individual config switches

Remove individual GATT plugin configuration switches and add a
new master gatt switch called --enable-gatt to enable/disable all
GATT related plugins at once.
GATT: Rename AttributeServer switch

Rename the AttributeServer main.conf option to EnableGatt and
change its purpose to enable/disable all GATT related activity.
GATT: Profile support for EnableGatt

Add support for the EnableGatt for all GATT profiles.
GATT: Rename service and char structs

Rename the att_primary to gatt_primary and att_char to gatt_char.
Characteristic and Service do not exist in the ATT spec, only in
GATT.
GATT: Replace start/end with att_range

Use att_range struct instead of individual start/end handles in
gatt_primary structure
sdp: Fix sdp_get_profile_descs for Mac Os X Lion

Mac OS X 10.7.3 publishes the following SDP record for HFP Gateway.
      record #2
          aid 0x0000 (SrvRecHndl)
             uint 0x10003
          aid 0x0001 (SrvClassIDList)
             < uuid-16 0x111f (Handsfree AG) uuid-16 0x1203 (Audio) >
          aid 0x0004 (ProtocolDescList)
             < < uuid-16 0x0100 (L2CAP) > <
             uuid-16 0x0003 (RFCOMM) uint 0x2 > >
          aid 0x0005 (BrwGrpList)
             < uuid-16 0x1002 (PubBrwsGrp) >
          aid 0x0006 (LangBaseAttrIDList)
             < uint 0x656e uint 0x6a uint 0x100 >
          aid 0x0009 (BTProfileDescList)
             < uuid-16 0x111e (Handsfree) uint 0x105 >
          aid 0x0100 (SrvName)
             str "Hands Free Audio Gateway"
          aid 0x0301 (SuppDataStoresList)
             uint 0x0
          aid 0x0311 (SuppFeatures)
             uint 0x0

BlueZ do not read correctly the version number of the profile.
The patch fixes this.

From my understanding, the SDP profile descriptor is a list. The for
loop in sdp_get_profile_desc iterates that list.  Until now, bluez
expected a collection of either uuid or lists with a uuid and a
version number. This can be represented as follow:
list=(uuid, uuid, (uuid, version))

The patch fixes the situation where the profile descriptor list
contains a uuid AND a version number both on the root level and not
enclosed in a sublist. If the next item after uuid is uint16, then
this is the version number. This can be represented as follow:
list=(uuid, uuid, version, uuid, (uuid, version))

Note that core v4.0 spec. states that the Profile Descriptor
list is a data sequence of profile descriptors. Each profile descriptor
is a data sequence whose first element is a UUID and second element is
a version number. This can be represented as follow:
list=((uuid, version), (uuid, version))
avdtp: fix audio source init check
attrib: Centralize ATTIO connection management

On Generic Attribute, register only one ATTIO connection callback to
centralize the connection management.

Also make sure the connection reference is properly dropped only if
there is no pending operation.
attrib: Discover Characteristics if already connected

On Generic Attribute, Discover All Characteristics of a Service can be
started immediately if already connected, without registering a ATTIO
connection callback.
attrib: Move Characteristic Discovery reply to a new function

Minor cleanup patch moving the creation of the reply for Discover
All Characteristics call to a new local function in the Generic
Attribute.
attrib: Register only new characteristics found

This avoids duplicating registration for previously found
characteristics.
attrib: Fix missing Discovery reply when disconnected

This patch fixes missing reply for DiscoverCharacteristics method on
Generic Attribute. If link is disconnected reply message is not sent.
attrib: Fix missing D-Bus message unref on DiscoverCharacteristics

This patch fixes a missing message unref when DiscoverCharacteristics on
Generic Attribute finishes.
attrib: Attempt to remove attio callback on watcher exit

When registering a watcher, it is attempted to add an attio callback.
Therefore, when the watcher is unregistered or exits, this attio should
be removed if there are no other users.

This is already done when unregistering a watcher, it just missed when
it exits without unregistering.
gattrib: Protect GAttrib when there is a pending write