Added suport for uploads to S3 above 3Gb

Added support for multipart and concurrency. 
By default uses multipart for files above 1Gb, both in write() and writeStream(). 
For remote source streams (S3 -> S3) it is not possible to use concurrency so it falls back to SerialTransfer.
I tested this with files up to 8Gb, S3 to local, local to S3 and S3 to S3.
Also updated and added unit tests, and made sure they all go through.