Added streaming uploads support

mini_s3 now supports streaming a file from disk to S3. Instead of
passing a an `iolist()`, pass one of the following tuples:

   {stream, filename()}
   {stream, filename(), chunk_size_bytes()}

to the `Value` argument. mini_s3 will read `ChunkSize` bytes at a
time into memory and send them to S3. The same `ChunkSize` value
is used to determine how much of the file to read into memory at
a time when calcualting its MD5 hash. Supporting CT tests were
added to `fakes3_SUITE.erl`. Note that most of the Dialyzer errors
you will encounter are because of mistakes in `dlhttpc` 's specs.