Multipart File Transfer

This PR is ready for CR.

Overview of changes:

* Added a `commands.File` interface that implements `io.Reader` (which also has a filename and can be read in parts)
* Changed from accessing file argument values in `Request#Arguments()` to a separate `Request#Files()`
* Open files recursively on the client (and make them into `commands.File`s)
* Transfer files as multipart in `commands/http`
`Read` and `Write` are not threadsafe. it may be that MFR qualifies for an embedded `sync.Mutex` (NB: not a `RWMutex`). 
```Go
type MultiFileReader struct {
    ...
    sync.Mutex  // no need to initialize. zero value is initialized
}
```

You can lock unlock at the top of each function that modifies state with:

```Go
mfr.Lock()
defer mfr.Unlock()
```