Replace per-app bottom bars with universal chat bar
Remove all five app_bar.html files (chat, todos, entities, search, dev)
and replace with a single universal chat bar rendered in app.html. The
bar is always visible at the bottom of every app.
In the chat app, the bar provides the same textarea and form elements
that workspace.html's initAppBarControls() expects, preserving full
chat functionality. Provider toggle is removed; defaults to google.
In non-chat apps, the bar submits to a new /api/triage endpoint that
calls generate() for a one-sentence response, shown inline. State
persists in localStorage across navigation.
Also removes App.app_bar_template field and all discovery code from
apps/__init__.py, makes body.has-app-bar class unconditional, and
adds chat-bar-* CSS classes for the new bar elements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>