Added streaming to s3

@aldeed S3 upload seems a bit slow compared to gridFS or filesystem. I
think we should prefer direct client to s3 upload at some point.

So one problem streaming to s3 server is that it expects content length
- so one can easily set this in options eg. if not performing any
transform (just set the fileObj.size)
But in most cases eg. if streaming from gm or others we don’t have the
length - so I’ve added a custom stream handling this still serving a
the nice createWriteStream interface.

So if contentLength is set in options we can stream directly to the s3
upload otherwise we stream to a temp file - then pass this + length on
to the upload.