Basic implementation of gatt service and characteristic

Handle ServiceDiscovered signals and create service objects.
SearchCompleted signal handling and characteristic creation will be completed in later patch sets.
Basic implementation of gatt service and characteristic. (part2)

1. Get the first characteristic of each service while search completed.
2. Create characteristics from results of 1.
3. characteristic.startNotification is still in progress.
Distribute and handle CharacteristicChanged signal.

Dispatch characteristicchanged event to applications will be implemented in
later patch sets.
Implement BluetoothGattDescriptor and GetDescriptor.

This commit covers:
1. After create discovered characteristics, get the first descriptor of them
2. Implement GetDescriptor
3. Distribute GetDescriptor signal to BluetoothGatt after GetDescriptor callback
4. Create descriptor objects

TODO: Implement BluetoothGattDescriptor::WriteValue()