Allow customizing filename and description

Usually the java.io.File's name is good enough, but if you're using a
tempfile, more control over the filename is useful. And the
Content-Description header can also be helpful to have.

I haven't updated any docs to reflect this, just the code for now.