Changed
- **BREAKING CHANGE:** Replace all uses of `asyncio.TimeoutError` with `MqttError`.
Calls to `Client.subscribe`/`unsubscribe`/`publish` will no longer raise `asyncio.TimeoutError.`
The new behaviour makes it easier to reason about, which exceptions the library
throws:
- Wrong input parameters? Raise `ValueError`.
- Network or protocol failures? `MqttError`.
- Broken library state? `RuntimeError`.