Bluetooth: clean up Bluetooth classes

The abstract BluetoothDevice class has a few problems inherited from
its origin as a ChromeOS-specific class split between implementation
and platform-specific components.

Clean those problems up, specifically:
 - replace bluetooth_class_, name_ and address_ non-abstract members
   with getter functions that the platform should implement.
 - also make IsConnected(), IsConnectable() and IsConnecting()
   abstract functions rather than providing an implementation
 - remove IsVisible() which was a CrOS-specific hack
 - remove IsBonded(), use IsPaired() instead
 - remove service_uuids_ non-abstract member; make GetServices return
   a copy of the list to allow implementations to fetch it on demand

BluetoothDevice retains implementations for GetName(), GetDisplayType()
and ProvidesServiceWithUUID() since those can be implemented entirely
using platform-provided information functions and would be identical
in each platform.

Also rename BluetoothAdapter::address() and BluetoothAdapter::name() to
GetAddress() and GetName() to match since they are also pure virtual.

BUG=none
TEST=device_unittests, browser_tests, unit_tests


Review URL: https://chromiumcodereview.appspot.com/13416005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192474 0039d316-1c4b-4281-b951-d872f2087c98
36 files changed