fix: add html2text + Rich render_display_data() for display_data output (#58)
Previously text/html display_data output was either ignored (log) or printed raw. Now: - New dependency: html2text (>=2024.2.26) - New util: render_display_data() in utils.py — returns Rich renderables (Markdown or Text) using priority text/markdown > text/html > text/plain. text/html is converted via html2text; text/plain is wrapped with Text.from_ansi to handle embedded ANSI escapes. - All three call sites (exec.py, automation.py, repl.py) refactored to use the shared function instead of duplicated if/elif chains. - Each module uses a shared Console instance (_console / self.console) to avoid re-allocating per-output during streaming. - Removed direct html2text and Markdown imports from the three call sites — they now just pass the renderable to Console.print(). - Tests in test_utils.py cover Markdown return, Text return, priority, and no-text fallback.