[Bluetooth] Add a way to validate more parameters

In many cases, an parameter with type 'object' is passed, and this
object is expected to have some parameters. We should be able to
verify that this object has the correct type of attributes.

Also add a simple Bluetooth address validator, using a simple regular
expression.
[Bluetooth] Add Adapter.setChangeListener and .unsetChangeListener

The C++ side of the extension already notifies the JS side of any changes
that changes in the adapter, it is just a matter of notifying the change.
[Bluetooth] API expects stopDiscovery to always work

Even if there's no active discovery session (the most common case
of error during this call), the API expects this to work, so we avoid
sending any error.
Merge pull request #223 from vcgomes/adapter-change-listener-v2

[Bluetooth] Add BluetoothAdapter.setChangeListener + fixes