anchor.diff:  When it is time to determine the next set of values to send to the
   show’s patched fixtures, this is what happens:
   
  -1.  The first thing Afterglow does is take a
  +. The first thing Afterglow does is take a
   http://deepsymmetry.org/afterglow/doc/afterglow.rhythm.html#var-ISnapshot[snapshot]
   of the show
   https://github.com/brunchboy/afterglow/wiki/Metronomes[metronome] to
  
positive.code: how they should look. This enables a consistent, coordinated appearance
  for everything in the frame.
  
  2.  The next step is to zero out the buffers that will be used to send
  DMX data for each universe, so that if no effect tries to set a value
  for a particular channel on this frame, a zero value will be sent for
  it.
  
  3.  Then Afterglow loops over all [[Effect Functions]] that are
  currently active for the show, and asks if any are ready to end, as
  described in the [[Effect Function Lifecycle]] section. If any are, they
  are removed from the list of active effects.
  
  4.  Then it makes another loop over any functions that did not end, to
  see how they want to affect the lights. It does this by calling, in
  order, each effect’s
  http://deepsymmetry.org/afterglow/doc/afterglow.effects.html#var-generate[generate]
  
negative.code: thing. If the effect doesn’t want to do anything this frame, it can
  simply return an empty assigner list.
  
  . Once all the assigners have been collected, Each assigner’s
  http://deepsymmetry.org/afterglow/doc/afterglow.effects.html#var-assign[assign]
  function is called, again passing in the show and the metronome
  snapshot, the target which is being assigned (a DMX channel in a show
  