Fix streaming downloads

This makes streaming uploads and downloads work correctly in `ubic_file`. To view the `ubic_file` CT tests pass using this version, clone https://github.com/varnerac-ubnt/ubic_file/tree/experimental and `make test`

Do not merge https://github.com/varnerac-ubnt/ubic_file/tree/experimental into `ubic_file`. Once this PR is merged into `mini_s3`, we can generate a correct PR for `ubic_file` 
There are two components to it. The first is that the `mini_s3` API guarded based on the argument type rather defensively. I didn't do that in my code and took it out when I found it. Maybe I should have left those guards in and added a catch-all after the guarded versions to throw a `badarg`. I'm not really sure on that. Another headache with that is that the `mini_s3` code tends to `throw` instead of simply returning `{error, Reason}`

Here, there are two possible options for the third argument in `get_object_acl_options/3`, a record (`#config{}`) or a list of options `get_object_acl_options()` defined here: https://github.com/varnerac-ubnt/mini_s3/blob/experimental/src/mini_s3.erl#L218 

`get_object_acl_options/3` is a convenience method for `get_object_acl_options/4`. In other cases, the API doesn't "fall through" to an `undef` if you pass a bad argument in, but crashes somewhere. I think eventually, I need to return `{error, badarg}`. However, the current issue is that `mini_s3` throws exceptions instead of returning `{error, Reason::term()}`. I want to get this in place, but it breaks `ubic_file` along the way. `ubic_file` is built to `try...catch` `mini_s3`. Once I adapt `mini_s3` to `{error, term()}` and adjust `ubic_file` to handle the new returns, I can add better `badarg` handling. If I were to guard on both `list()` and `#config{}`, I could still get garbage data in, unless I validated the that the `list()` a `get_object_acl_options()`. Changing the return type of `mini_s3` to `{error, term()}` allows me to expand the Reason (`term()`) component into something more robust, which @jcomellas has been asking for. I'm currently thinking of using atoms for the codes found here: http://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html 

If I add the record check, this will be the only place in the API where where the code fails on an `undef` instead of "letting it crash", I think.

There is probably a bug in this code, or at least "lack of feature". I have opened up most `mini_s3` methods to pass options to the underlying HTTP client `lhttpc` (or `dlhttpc`). This method and a few others should probably do that. However, `ubic_file` doesn't use these methods at the moment so it's been overlooked.