The Component trait's render(&self) couldn't mutate the cache.
Switched to RefCell<RenderCache> for interior mutability so the
word-wrapped line cache rebuilds on dirty during render().
Also adds Dashboard::clear_dirty() and marks components clean
after each draw_screen() cycle.