This change adds 3 functions to main API: presignedGetObjectURL,
presignedPutObjectURL and presignedHeadObjectURL.
A fourth more generic API is added to `Network.Minio.S3API` -
makePresignedURL.
Additionally, refactors signing code for readability and the ability
to reuse for pre-signing.
* Performs server side copy of an object by creating a new object that
is a copy of an existing object or part of an existing object.
* The user may specify an object on server of any size, and optionally
specify a byte range to only copy a part of the object.
* Copy conditions are also supported.