[usb transport] Make sure InterruptWriterThread actually exits

If the InterruptWriterThread was in the wrong part of its loop
then it might not have noticed the main thread calling exitThread.
[usb transport] code cleanup: tidy ControlReaderThread loop

The ControlReaderThread had an unnecessary nested loop. Flattening it
to one loop makes its error handler more similar to that of the other
threads and thus easier to understand.
[usb transport] Fix deactivate()

MTP deactivation wasn't properly shutting down the control thread,
which led to the main thread hanging in wait().
[usb transport] Respond to BIND and UNBIND events

Use BIND to open the /dev/mtp/ep* devices and start the threads.
Use UNBIND to stop the threads, close the devices and reset the thread states.

This results in a cleaner environment for the next connection.