Allow a new name to be passed to upload()

Give an image a new name, which will respect the extension provided in the name, or if none is passed it will use the original extension.

I'd REALLY like to have set up a test for this with vfsStream but that would require a shitload of rewriting. Is this something you could look into going forwards? Otherwise I'd need to actually make a new file, which isn't cool and permission issues could cause tests to fail even though the code is fine.