remove `ResourceT`

The `ResourceT` wrapper around `IO` in the API is (mostly) due to the usage of the http-conduit package. By switching to the more recent http-client package the `ResourceT` layer can be removed from the API, thus simplifying the usage. 

There are a few places internally where conduits are used. In these cases the `BodyReader` in the `ResponseBody` can easily be wrapped into a `Source` by using the `bodyReaderSource` function from http-conduit, that is reproduced in `Aws.Core` (because it's almost a one-liner and wouldn't justify keeping the dependency on http-conduit).

The patch in its current form changes the API of the package and breaks existing code. There are a few options to deal with that:

1.  Expect library users to adapt their code (e.g. by wrapping API calls into `liftIO`).

2.  Replace `IO` by a `MonadIO` and `MonadCatch` constraints in all API calls. This would probably be backward compatible with most existing code (since `ResourceT` provides instances for both).

3. Provide legacy versions for the API calls (with implementations that are based on the new code) with the old names and use new names for the new functions. This would be fully backward compatible.

This PR currently implements the first approach. It is easy to add a patch to achieve the second approach. Personally, I think, that the second approach is preferable.
Huh, shouldn't the HTTP.withResponse already have closed the input stream at this point? Did you test this?