bluetooth: Add BluetoothSocket.readData()

This will only return valid data if called during onmessage() callback.
bluetooth: Add support for BluetoothSocket.onclose() callback

This function will be called when the socket is closed.
bluetooth: Add support for BluetoothSocket.writeData()

writeData() is implemented using a "sync" message, because we need
to reply to the caller the number of bytes written.
bluetooth: Notify that the socket has closed

In some cases, the socket may close unexpectedly, for example, the
remote device goes out of range, we need to notify that the socket
has been closed in these cases.
bluetooth: Add BluetoothSocket.close()

This method allows the application to request the socket to
be closed.
bluetooth: Add BluetoothServiceHandler.unregister()

This will be used when the application wants to stop listening for
connections.