Refactor callbacks to be dynamically generated, avoiding having to pass around a `user_data` pointer.
Update HTTP example to use `iter_content` + `BytesIO`.