PathPrefix: implement relativness and absolutness

I thought that it would be natural and useful for a `PathPrefix` to know about its relativeness and absoluteness, and to expose it as a public interface.

Bonus of this change is that now all methods operate on the `PathPrefix` itself, instead of taking strings as arguments and modifying *them*.

Originally I had just `#relative` and `#absolute`, but I added the `#relative!` and `#absolute!` methods in order to be able to use them internally without creating unnecessary objects.