New class HomogeneousAlgorithm for when all VMs are identical

All existing algorithms now inherit from HomogeneousAlgorithm.

Allows us to move Environment out of Algorithm base class without
breaking any existing algorithms.