Add eject/detach methods

Devices can be ejected/detached using

    udiskie-umount --eject <device>
    udiskie-umount --detach <device>
Add force=False default parameter to Mounter.eject/detach

With force=True all filesystems on the drive will be unmounted before
attempting to eject or detach. Currently, there is no possibility to
prevent race conditions from happening.
Checked attribute access in udiskie.udisks

Prevent access of attributes that are invalid in the current context,
such as device.luks_cleartext_holder if the device is not a LUKS device.
This does not deal with race conditions.
Update (fix) broken code

- udiskie.udisks: Device.is_luks_cleartext_slave: adapt to new Udisks,
  Device interfaces.

- udiskie.mount: fix obsolete version of unlock_device and the
  force=True branch of remove_device. For the latter, define a
  udiskie.udisks.Device.__eq__ operator.
Add support for LUKS devices in udisks.Device.drive
Perform minor cosmetic improvements
Merge branch 'eject'

Provide basic eject/detach capability.

Conflicts:
	udiskie/mount.py
	udiskie/udisks.py
Ignore errors in eject_all, detach_all

With the current technique errors are to be expected when forcing a
drive to detach and then checking properties of any of its contained
devices.

TODO: check type of error and possibly print information/trace
Catch and log errors in eject_device, detach_device
Add force parameter in higher level eject/detach/unmount methods

When calling eject/detach from the CLI the force=True branch will be
used automatically.
Merge branch 'eject'

Currently, detaching a LUKS device is unreliable when it is in use and
no error is reported.
Improve runtime dependency check

More granular error messages.
Check for availability of either pynotify or notify2.
Bump version

Changes include:

- drives can be ejected or detached
- setup.py only warns about missing dependencies
- started to create test files. No unit tests for the actual business
  logic nor any integration tests yet.
- internal code refactoring