Represents an absolute or relative file system path.
This struct allows to do safe operations on paths, such as concatenation and sub paths. Checks
are done to disallow invalid operations such as concatenating two absolute paths. It also
validates path strings and allows for easy checking of malicious relative paths.