Removed goalReached boolean, changed step method

Removed the goal reached boolean as atGoal() was doing its job. Changed
step method so that it calls the add memento message and a new abstract
message algorithmLogic(). Subclasses implement algorithmLogic() to
perform the logic needed to perform a step. Edited some visibilities