Bluetooth class changes for implementing local GATT attributes.

In this CL, we implement the changes to the platform independent and BlueZ
specific class changes to support local GATT services. The major changes
from the code in trunk are,

.) Cleaning up of the classes and implementing all missing parts.
.) Adding code to properly take ownership of attributes of all three kinds.
.) Adding structure to the attributes to correctly setup the hierarchy
expected (services <-- characteristics <-- descriptors).
.) Addition of an AttributeDelegate to handle calls from DBus and wrappers
to translate them to the BluetoothLocalGattService::Delegate.
.) Cleanup in all the code touched.

Part 1 of a 3 patch series:
https://crrev.com/1915803002 Bluetooth class changes <<<
https://crrev.com/1914893002 DBus class changes
https://crrev.com/1919683002 Adapter changes + tests

R=ortuno@chromium.org, scheib@chromium.org
BUG=601935

Review-Url: https://codereview.chromium.org/1915803002
Cr-Commit-Position: refs/heads/master@{#390315}
19 files changed