Actually, it is fairly easy to change colors per layer on any machine. You just pause it and change filament. We do it every day. If you want to be more exact, you can edit the Gcode so that it pauses after a Z motor increment.
A dual head allows you to print different colors in the same layer. Or even different materials.