gatt: Fix segfault when connecting non-bonded devices

This patch fix a segmentation fault when Connect method gets called
for non-bonded devices. Attributes are not persistent for non-bonded
devices. When bluetoothd starts, the GATT based device is created due
the UUID stored in the "Services" key of the "info" file.
gatt: Fix invalid read when bluetoothd exits

bluetoothd[6926]: src/gatt.c:btd_gatt_service_manager_cleanup()
bluetoothd[6926]: src/adapter.c:adapter_remove() Removing adapter
/org/bluez/hci0
bluetoothd[6926]: src/device.c:device_remove() Removing device
/org/bluez/hci0/dev_F1_0F_57_1B_C6_67
bluetoothd[6926]: src/service.c:change_state() 0x4f6b080: device
F1:0F:57:1B:C6:67 profile Proximity Reporter GATT Driver state changed:
disconnected -> unavailable (0)
bluetoothd[6926]: profiles/proximity/reporter.c:reporter_device_remove()
Unregister Proximity Reporter for /org/bluez/hci0/dev_F1_0F_57_1B_C6_67
bluetoothd[6926]: src/service.c:btd_service_unref() 0x4f6b080: ref=0
bluetoothd[6926]: src/service.c:change_state() 0x4f6ffb0: device
F1:0F:57:1B:C6:67 profile gatt-gap-profile state changed: disconnected
-> unavailable (0)
bluetoothd[6926]: profiles/gatt/gatt.c:gatt_driver_remove() Removing
device
bluetoothd[6926]: src/service.c:btd_service_unref() 0x4f6ffb0: ref=0
==6926== Invalid read of size 8
==6926==    at 0x3CA5E37738: g_hash_table_remove_internal (ghash.c:401)
==6926==    by 0x46FAA1: device_remove (device.c:2368)
==6926==    by 0x45E9E9: adapter_remove (adapter.c:3721)
==6926==    by 0x46283A: adapter_cleanup (adapter.c:6035)
==6926==    by 0x40A7A9: main (main.c:599)
==6926==  Address 0x4ca89d0 is 48 bytes inside a block of size 88 free'd
==6926==    at 0x4A07786: free (vg_replace_malloc.c:446)
==6926==    by 0x3CA5E4D50E: g_free (gmem.c:252)
==6926==    by 0x3CA5E61E5E: g_slice_free1 (gslice.c:1111)
==6926==    by 0x40A7A4: main (main.c:597)
==6926==
proximity: Remove old Immediate Alert service
IAS: Move D-Bus signal emit code to a separate function
IAS: Only emit property changed D-Bus signal if alert value changes
IAS: Use error() for invalid characteristic value
IAS: Emit "none" alert level if monitor/locator writes invalid value
gatt: Use correct GATT write operation based on characteristic properties
gatt-service: Implement write support