fix(dest): don't modify original file object

Instead of modifying the path of a file object when writing it to dest, construct a new File(file) from it so that the original object and upstream streams are not impacted.

Closes #19

The major issue with this change was that some of the unit tests were testing whether the file that came out was the same object as the one that came in, **instead** of actually verifying that the properties on the outgoing file were correct.  So I think I've improved the tests along the way.