first cut ui animation controller
per-widget animation opacity. only implemented for ColorBackground so far because it would all work better with per-widget rtt and I want to test that first