Add non-functional udisks2 module

At this point the udisks2 module is merely a slightly modified copy of
the udisks1 module. The implementation is not yet adapted to the udisks2
daemon dbus interface.
Implement most of the functionality for the udisks2 dbus service
Convert dbus.Array([dbus.Byte]) to strings with tostr method
Fix listening signal names: add/remove interfaces
Use OfflineInterfaceService objects in udisks2.Device to access the dbus API

The advantage being that the Device can also be instanciated with a
provider for DBusProxy objects as online provider for the dbus API.
Merge branch 'fix-udisks1-race-conditions' into ud2
Implement udisks2.Daemon class
Fix udisks2.Daemon
Merge branch 'fix-udisks1-race-conditions' into udisks2
Add command line option for experimental udisks2 support
Fix various implementation faults in the udisks2 module
Use jobs to issue pre and post events
Log events for debugging purposes
Fake a Drive interface in top level devices

This is thought to make the behaviour across the udisks1/2 modules more
consistent and allows for example the tray component to be usable
without further updating.
Enable detaching drives in udisks2
Fix (?): device_mounted issued before mount path is known to udiskie
Unify udisks1/2 method interface: options are passed as keyword arguments
Add -1 option to explicitly request udisks1

In future versions of udiskie udisks2 might become the default backend.
The explicit option to use udisks1 provides forward compatibility.
Replace is_luks_cleartext_slave with more general in_use function
Merge branch 'fix-udisks1-race-conditions' into udisks2