BREAKING CHANGES!! READ THE [MIGRATION GUIDE](https://github.com/david-lev/pywa/blob/v2/MIGRATION.md)
- [listeners]: Listeners are a new way to handle incoming user updates (messages, callbacks, etc.). They are more flexible, faster, and easier to use than handlers.
- [sent_message]: The `SentMessage` object returned by `send_message`, `send_image`, etc., contains the message ID and allows to act on the sent message with methods like `reply_x`, `wait_for_x` etc.
- [filters]: Filters are now objects that can be combined using logical operators. They are more powerful and flexible than the previous filter system.
- [handlers] allow to register callbacks without WhatsApp instance
- [flows] allow pythonic conditionals in `If` component
- [flows]: A new method `FlowCompletion.get_media(types.Image, key="img")` allows you to construct a media object and perform actions like `.download()` on it.
- [flows]: Decrypt media directly from FlowRequest using `.decrypt_media(key, index)`.
- [flows] rename `.data_key` and `.from_ref` to `.ref`
- [client]: The client can run without a token but won’t allow API operations (only webhook listening).
- [callback] allow to override callback data id
- [utils] bump graph-api version to `21.0`