Allow Dynamic File Renaming

Adds support for `options.rename` which is a `function(targetPath) { return newPath; }` allowing selective renaming of files.

Not sure how useful this will be for other users, however I had need of it in one of my applications and figured I'd open a merge request in case you wanted the functionality.

**WARNING** This doesn't support renaming beyond the filename/extension, changing the directory (unless the directory already exists) is going to cause ncp to fail the copy. This isn't an issue in my use case, but it might be for others.