properly uses the fileKey option and properly populates the FileUploadResult

The fileKey option should be used to set the name for the parameter to which the file upload should correspond.
The FileUploadResult was not being populated at all (the FileUploadResult constructor does not take any parameters) and the result data being used was wrong also as it was the file that was just uploaded instead of the actual response to the request.
BytesSent is still partially incorrect as it should take into account the entire content length not just the file size but that looks to be a bit more tricky to calculate.