Evaluate include/exclude filters from the source dir, not the CWD

This fixes #548, which addresses the semantics of the include/exclude filters.

The previous behavior was to expand patterns based on the current working directory, so if I'm in "/a/b/c" and I run an upload command with an exclude filter `cp /x/y/z --exclude "*"` then the exclude filter would be expanded into `/a/b/c/*`, which causes a number of issues.

This fix will expand the include/exclude filters based on the source directory so the example above we'd have an exclude filter of `/x/y/z/*` instead of `/a/b/c/*`.

I've tested this, and updated the unit tests and integration tests.