manually forming paths for etree consumption

It seems like the etree library expects paths to be formed with forward
slashes (because why wouldn't it?). Unfortunately on Windows systems,
path.join uses backslashes, causing a lot of "cannot call asText() on
undefined" errors.