bluetooth: Update the map of GATT services when services resolve

Before we updated the map two times:

1. When constructing the device object *iff* the services had been resolved.
2. When a new service was added.

This meant that if there was a cached service before services resolved,
the service would never be added to the map.

There are a couple of changes:

1. No longer add BluetoothDeviceBluez as an observer of BluetoothDeviceClient.
   This follows the previous pattern of exposing a function that
   BluetoothAdapterClient will use to update the device.
2. When services are resolved we add all previously unknown services.
3. Modified 2 tests and added two extra ones to test all the following cases:

   1. Cached services exist and discovery hasn't completed.
   2. Cached services exist and discovery has completed.
   3. New service is exposed with no previous cached services.
   4. New service is exposed with previous cached service.

   Case 1 should cover this bug.

BUG=624400

Review-Url: https://codereview.chromium.org/2105423003
Cr-Commit-Position: refs/heads/master@{#404468}
8 files changed