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`
> We should cast less =)

yes, but _how_. I've an idea but requires changing the cmd lib too much. We've too  many other things to do.

> But in all seriousness, we can transition off of CastErrr. The debugerror prints the stack trace and only does so in debug mode.

Awesome!!