Introduce PathParts.
Introduce PathParts.

Node's path.parse and path.format is not a very good API. The structure contains several overlapping components (base, name, and ext for example), and it's surprisingly subtle if you want to use them to change the extension of a path, for example. (Changing just ext won't work; you'll need to delete base, but even then format doesn't exactly work.)

PathParts is a similar API that breaks down a path into parts and joins it back together, but it has no overlapping components, so there's no subtle behavior when recombining them.

This will be used in the test driver to derive the path to the expected results for a test case (test cases will have a .test extension, expected results a .expected extension and will be sibling to the test file).

paulymer/CRISP-8