Fix #283 - Refactor rsync to only use absolute paths

I wonder if we can split this file (i.e., lib/rsync.js) up even more.  What you did with rsync-utils.js should allow you to have separate files for each of the rsync steps, such that rsync can just be:

```
// rsync/index.js
module.exports = {
  patch: require('./patch.js');
  diff: require('./diff.js');
  ...
};
```
And each of your `rsync.*` functions can get turned into its own file.  It might make it easier to follow what's happening in each, because those functions are huge, and file itself is massive otherwise.