Complete overhaul of filesystem.py.

- added license
- mount() and unmount() are now methods of Device instead of Mountpoint
- the temporary mountpoints will not be deleted in unmount():
- added get_device_file_paths(), which returns a list of paths pointing to
  a device, not used yet
- mount() and unmount() nearly completely rewritten
- added new is_mounted() method to Device
- updated docs
- every method now reraises ProcessErrors if a process fails
- MountpointBusyError and MountpointNotReadyError merged into MountError