UI cache that works

Engine resources are invalidated by elements listening to "invalidate" event