This abstract class should be subclassed
with a class containing implementations of the init()
and run() methods for a particular type of GaPopulation.
searches for a provider that provides an
implementation of the algorithm named in its parameter,
throwing a "no such algorithm" exception if none is found.