populate document_id field even for device roots.
add Path class to API.
cleanup.
add static constructor to Path with segment to append.
allow multiple path segments to appended.
allow a Path object to return its inner value as chain of concatenated segments.

also can be re-fed to the constructor of a second Path instance :)
allow Paths to be queried if they represent the root dir.
add mapping from Path to StorageDevice.
introduce common interfaces to access filesystems.

design is based on Java's NIO file stuff:

 * immutable Path
 * Provider that takes Path instances to its modification and access methods.
add some more metadata to the provider.

by the way:
fixes #21 #22 #23!
Merge branch 'feature/issue-22-list-directories' into dev