Base class to define how a retro product selector should behave. Given
a collection of retro-reagents and a target molecule, it will apply the
retro-reagents to the target molecule. Any of the retro-products
(precursors) it deems worthy will be returned, along with a reference to
the retro-reagent that created it.