fix: audio chain playback, empty bubbles, playback state reset
- Rewrote AudioService with proper queue-based chain playback
- Incoming voice chunks queue sequentially (no more interrupting)
- Play button resets to play icon when track finishes
- Tap playing bubble to stop (toggle works correctly)
- onPlaybackStateChanged callback for UI state sync
- Empty text bubbles filtered on load (leftover voice chunks)
- Images persist across restarts (imageBase64 kept in storage)
- Voice messages without audio show as text after restart