cleanup in upload.go
There was a function 'validateSource' that was used to check if the source file was validated. This function called os.Stat on the source file, and then after we called 'validateSource' we called os.Stat again on the source file to get its permissions.
I integrated validateSource into the Upload function because it wasn't very much code, it wasn't used anywhere else, and it allowed us to avoid an extra syscall when uploading a file.
I also extended some errors with more context.