Cleanup client utils

I split up `utils.py` into different files and placed them in a `utils/` directory. I also cleaned some lint errors in other parts of the client.
I'll leave the ClientException idea out for now, since the only thing that would override it would be `Timeout`. I left a TODO in there.