Bug 983576: Move DispatchToBtThread to mozilla::bluetooth namespace, r=echou

This patch moves DispatchToBtThread to mozilla::bluetooth, so that
it is available on the I/O thread.
Bug 983576: Refactor BlueZ start/stop code, r=echou

With this patch, the start code of Bluetooth's BlueZ back mostly
runs on the I/O thread. Only the loading of the BT firmware and
the blocking connection setup is done on the BT thread.

The stop code has been moved to the I/O thread, except for some
initial waiting and the final cleanup of the firmware. The code
doesn't wait for errors anymore when cleaning up the connection
to DBus. This makes it run completely non-blocking. The initial
waiting may later be replaced by something more sophisticated.
Bug 983576: Fail if sDBusConnection is not set, r=echou

Until now, we had corner cases in Bluetooth where DBus messages might
have been received on connections that are shutting down. This can't
happen any longer and this patch replaces the respective tests with
assertions.
Bug 983576: Annotate global BlueZ variables, r=echou

The global variables in BluetoothDBusService.cpp are now annotated
for their multi-threading access. Some code still seems to access
some of these variables in an unprotected manner. Follow-up patches
should clean this up.

As a side effect, this patch makes several variables as constant,
which improves correctness of the code.
Bug 983576: Annotate all assertions for non-main threads in BlueZ backend, r=echou

This patch adds an annotation to each assertion for non-main threads in
the BlueZ backend of Bluetooth. This should make is easy and obvious to
see in which context a method or function is expected to run.