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 think this shouldn't extend OkException- I would want to catch all OkExceptions and send those errors back to the server. All other exceptions should be surfaced to the students- including this Timeout exception.