Bug 979370: Move Bluetooth thread into BlueZ backend, r=echou

The Bluetooth thread is only necessary for starting and stopping
Bluetooth with the BlueZ backend. Bluedroid implements its multi-
threading internally.

This patch moves the Bluetooth thread into the BlueZ backend. Two
runnables implement the starting and stopping code. The methods
|StartInternal| and |StopInternal| of |BluetoothDBusService| each
create an instance of the respective runnable and send it to the
internal BT thread. The code in |BluetoothService| runs completely
on the main thread.

For the Bluedroid back end, the patch changes a number of thread
assertions.
Bug 979370: Split |BluetoothService::StartStopBluetooth|, r=echou

This patch splits |BluetoothService::StartStopBluetooth| into two
separate functions. Both have mostly different code paths.
Bug 979370: Remove |ToggleBtTask|, r=echou

|ToggleBtTask| runs on the same thread as the start and stop methods
of |BluetoothService|. This patch merges the code of |ToggleBtTask|
into the start and stop methods and removes the class.
Bug 979370: Remove |BluetoothService::IsEnabledInternal|, r=echou

The method |IsEnabledInternal| of |BluetoothService| is not used
any longer. This patch removes it.