Refactor rsync

Update rsync to working code
Add methods to use web sockets to communicate with client to perform a sync
It's odd to see you call it `set` since you're not setting anything.  Naming something `set` implies just that, but `callback` in the calling function will be unchanged unless you overwrite it with the return value.  It's cleaner to just look for a function and return it instead of implying that you're setting something.