Modify the algorithm to work with an array of colors.

ExecutionTask is now passed a Color array upon construction.
The algorithm then searches for the cubes in the order specified by the
array. After each cube is picked - the algorithm goes to the "base" cube -
whose color is specified by the first array member.