When invoking external tools as part of the compilation pipeline, we
pass these a sequence of options on the command-line. Rather than
just using a list of Strings, we use a type that allows us to distinguish
between filepaths and 'other stuff'. The reason for this is that
this type gives us a handle on transforming filenames, and filenames only,
to whatever format they're expected to be on a particular platform.