Fix #53 - Refactor rsync

This is mostly a style cleanup, but I also was able to simplify a number of code paths, eliminate duplicate code, and fix a few bugs. I've also renamed a bunch of variables to make it more clear what's happening, broken things into smaller functions, and re-ordered some operations so the nesting isn't so deep.
hmm I'm thinking maybe we should rename it to fs instead of srcFS, because we don't really care where the filesystem came from