Allow for more complicated directory paths
Created by: cactorium
This allows multiple ".." and "." parts to be used in a uncanonicalized path. Previously trying to access a path with "file:/home/user/../.." results in a ENOENT error, because that was canonicalized into "file:/home/..". This more correctly resolves the path to "file:". Unfortunately it adds another allocation, because I don't think it's possible to reverse an iterator unless it's backed in memory; there is probably a more efficient way to do this with more involved logic.