Implement EventHandler class for streaming tool call processing, add demo_tools console script and Makefile target, introduce demo_tools.py with echo and remember functions, and update ReplikaAgent with temperature parameter in demo_replika.py
The diff shows two changes in `src/ragent/__init__.py` within the `Agent.communicate` method:
- Replaced `isinstance(message, list)` with `hasattr(message, "__iter__")` to support any iterable type for the messages parameter.
- Fixed a bug where `message_role` was incorrectly assigned to `message["content"]` instead of `message["role"]` when processing dict messages, and moved the assignment before the content extraction to preserve the role value.