MultipleFileUpload transfer step

Hi there!

I made something like this a while ago, but never bothered to clean it up and submit a PR.
But – seeing djmitche is on a roll – I took the time and rewrote the whole thing from scratch.

So… what is this?

The `MultipleFileUpload` step takes a (renderable) list of slave-side files and directories and transfers them to the master in parallel.

For each given file, the implementation uses the `stat` remote command to determine if it's a file or directory and uses the appropriate method (generously copied from `FileUpload` and `DirectoryUpload`) to upload it to the master. Files are stored _inside_ the directory pointed to by `masterdest`. That is, their `os.path.basename()` is `os.path.join()`ed to the `masterdest` directory to obtain the actual filename.

Of course, this requires some more documentation, release notes and tests.
But if you're interested in this at all, I'll be happy to get this branch in a proper shape!

PS: I took the liberty introduce the `TestFileUpload` class to the magic of the `buildbot.test.util.steps.BuildStepMixin`, you're free drop that commit afterwards if you don't like it.