Significant optimization to reduce redundant calculation of multicast trees.

Previously, any reception state change on a particular router caused all
multicast groups passing through the router to be recalculated. This
optimization only recalculates groups whose membership state actually
changed. Note that the module is not yet optimized for changes to the
topology.