Convert Position into a value class

`\n` is a perfectly valid file name, but the empty string is not. Why did you change this?