Pass values to closures esp. when passed to defer statement. (#3050)
Pass values to closures esp. when passed to defer statement. (#3050)

opsID, a variable on the stack, changes over the course of
Completemultipartupload function in xl-v1-multipart.go.  This was
being used in a function closure which was passed to defer
statement. The variables used in the closure depend on their values at
the time of evaluation which is indeterminate behaviour. It is
incorrect to depend on values of variables on stack at the end of
function, when deferred functions are executed.
harshavardhana/minio,krishnasrinivas/minio,aead/minio,donatello/minio,rushenn/minio,vadmeste/minio,dutchcoders/minio,hackintoshrao/minio,aead/minio,abperiasamy/minio,dvstate/minio,hackintoshrao/minio,rushenn/minio,abperiasamy/minio,harshavardhana/minio,balamurugana/minio,fwessels/minio,jimjag/minio,krisis/minio,abperiasamy/minio,fwessels/minio,koolhead17/minio,brendanashworth/minio,aead/minio,alexellis/minio,harshavardhana/minio,krishnasrinivas/minio,jimjag/minio,harshavardhana/minio,harshavardhana/minio,harshavardhana/minio,brendanashworth/minio,brendanashworth/minio,NitishT/minio,aead/minio,krisis/minio,luomeiqin/minio,hackintoshrao/minio,aead/minio,balamurugana/minio,dvstate/minio,NitishT/minio,aead/minio,harshavardhana/minio,harshavardhana/minio,dutchcoders/minio,minio/minio,jimjag/minio,donatello/minio,NitishT/minio,abperiasamy/minio,luomeiqin/minio,rushenn/minio,alexellis/minio,NitishT/minio,rushenn/minio,fwessels/minio,jimjag/minio,krishnasrinivas/minio,vadmeste/minio,hackintoshrao/minio,dvstate/minio,minio/minio,luomeiqin/minio,fwessels/minio,brendanashworth/minio,krishnasrinivas/minio,koolhead17/minio,luomeiqin/minio,dutchcoders/minio,aead/minio,dutchcoders/minio,aead/minio,dvstate/minio