Sets the client according to the given $config array, following the rules:
- If no custom client is given, instantiates a new GuzzleHttp\Client
- If an instance of GuzzleHttp\ClientInterface is given, we only pass it through
- If a closure is given, it gets executed receiving the parameters given