Path manipulation functions

This patch adds several functions for manipulating paths into the local
filesystem.  It's largely modeled after Python's `os.path` module.
Paths do not have to refer to existing files or directories, and we
don't (yet) do any normalization of the paths.
File and directories

This patch adds a new `cork_file` type to represent a file or directory
in the local filesystem.  Its API is modeled on combination of the Java
`File` class and the Python `os` and `os.path` modules.

We currently have several functions that operate on files.  One tests
whether a file exists, and if so, whether its a file, directory, or
symlink.  One removes a file or directory, and optionally its contents.
One creates a new directory, and optionally its parents.
Lists of paths

This patch adds several functions for working with lists of paths,
including a constructor function that parses a colon-separated path list
encoded as a single string.
Finding a file within a list of paths

This patch adds functions that searches a list of paths for a file.  The
file to search for is specified by path that's relative to each of the
paths in the list.  Once function returns a `cork_file` instance for the
first file that exists, the other returns a file list containing all of
the files that exist.
Accessor functions for standard paths

This patch adds functions that return paths or path lists containing the
standard paths defined by the XDG Base Directory Specification.