doesn't happen properly and events are left of the ff device meaning we
run out of device space. Added a thread that init and cleanup are called
from via methods on the interface.
Then it became apparent that rumble would only work from the same thread
as the others too, so thats added in there.
Nastyness all round.