Changed LearnMethod from Java enum to sealed trait/case class
Solver's maximize/minimize method now takes variable name as argument
for consistency with the CSPOM/Concrete translation model