Refactor|libdeng2|RuleRectangle: Reimplemented based on IndirectRule
RuleRectangle now defines the output rules directly in terms of inputs, however the outputs are indirect so that anyone depending on them does not get distracted by the possible changing of inputs later on.
This results in a substantially more elegant implementation for RuleRectangle that no longer has to rely on crutches to operate correctly: each output rule knows exactly how it depends on its inputs, so rule invalidation can work normally.
Furthermore, the rectangle's anchor point animation can now be done with scalar rules without need for any extra work.
Refactor|libdeng2|RuleRectangle: Reimplemented based on IndirectRule
RuleRectangle now defines the output rules directly in terms of
inputs, however the outputs are indirect so that anyone depending on
them does not get distracted by the possible changing of inputs
later on.
This results in a substantially more elegant implementation for
RuleRectangle that no longer has to rely on crutches to operate
correctly: each output rule knows exactly how it depends on its
inputs, so rule invalidation can work normally.
Furthermore, the rectangle's anchor point animation can now be done
with scalar rules without need for any extra work.
The clunky DelegateRule was removed entirely.