Rename Node to Component
PathName abstraction over FilePath/RawFilePath

By not exporting the constructor, we can ensure that a PathName is
safely built up from a Path or given to us by the file system, and we
can optimize for different platforms transparently.