Fix extruders alternating each layer for inner and outer walls
Fix extruders alternating each layer for inner and outer walls

When multiple extruders are used for a print, the `optimize()` function of the InsetOrderOptimizer
is called once for every extruder. This function would then add all the wall insets for all
extruders in the final layer data. As a result, the outer and inner walls were printed multiple
times, once for each extruder.

Why is this happening?

To optimize travelling (i.e. to make sure that the extruder that ends in the previous layer is the
extruder that starts in the next layer), the list of extruders is iterated with a different
direction on each consecutive iteration in multi-extruder prints (e.g. layer 0: 0->1->2->3,
layer 1: 3->2->1->0, layer 2: 0->1->2->3 etc.). This was leading to the print looking like it
alternates extruders in consecutive layer while in truth it was just instructed to print all the
walls with all the layers.

This commit fixes that by making sure that each wall type (outer or inner) is printed only once
with the extruder indicated by the user (the outer wall should be printed with the wall_0_extruder
_nr and the inner wall with the wall_x_extruder_nr).

The commit also ensures that infill walls and skin walls will not take into account the setting
"Outer Before Inner Walls" when the wall_0 and wall_x extruders are different (considering that the
"Outer Before Inner Walls" setting is disabled in the front-end in that case).

CURA-7927

Ultimaker/CuraEngine,Ultimaker/CuraEngine