Make attribute dirtying smarter

We now keep track of what attributes the content select depends on and when an attribute is changed we check if the current attribute change would affect one of the attributes the renderer depends on.

Fixes #207