add rename

This avoids creating the target directory if the old and new path are
identical.

required for js-git data integrity fix I'm about to push.
Missing return.  Should be `return callback(err);`