Make Path.prototype.replace reuse replaced Path objects

This mitigates a significant source of ongoing confusion, namely that it was previously difficult to replace the same path twice unless you were very careful to call `path.replace(newNode)[0].replace` instead of trying to call `path.replace` again.

Although I believe this will fix a number of subtle bugs, it still calls for a minor version bump because it's potentially a breaking change.