Ensure replacing a node with itself works consistently.

This comes from a desire to prepend variables at the top of a scope. I asked on twitter how to achieve this [1] since using `Array#unshift` to prepend caused subsequent `replace` calls for any of the `NodePath` inside the same array to replace the wrong node. The solution proposed by @benjamn [2] works as long as you aren't traversing and holding on to a stale copy of the `NodePath` with the wrong index (name).

This commit ensures that the stale `NodePath` is updated with the right index (name) so that if you call `this.replace(...)` inside your traversal callback you will be replacing the right node.

[1]: https://twitter.com/eventualbuddha/status/458994449410834432
[2]: https://twitter.com/benjamn/status/459001056861904897