bluetooth: Fix using the "Name" property for devices

BlueZ exports two properties that should hold the name of a device:

- Name: the name that the device exposes, which is optional.

- Alias: an BlueZ-only concept, this property is always available and
  fallbacks to the address of the device if the device doesn't support any
  method of obtaining its name. If the UI choses, this property can be changed
  to something that the user finds easier to remember.

In some cases, mostly when dealing with older devices, the Alias property is
the only way to display a "friendlier" name for a device.

This also fixes an issue that when pairing with older devices, the name on
the paired devices list was undefined, if the device didn't had the "Name"
property at the time of pairing.
bluetooth-demo: Add support for enabling/disabling the adapter

This updates the demo with the setPowered() support that was recently added
to our Bluetooth API.
bluetooth: Fix trying to call non-callable callbacks

In case the user passes wrong objects in the 'onfinished' or
'onstarted' callbacks, we should not try to call them if they
are not functions.