Avoid X-offset callbacks when getting pure Y aligned side
When a cross-staff beam calls pure_relative_y_coordinate from its consider_auto_knees method the chain of pure calls can eventually result in calling the X-offset callback of a grob in the axis group, which can trigger callbacks for properties that are still "calculation-in-progress".
Explicitly cater for this scenario by avoiding calling parent_relative(X_AXIS) when we are trying to get pure Y relative values for a grob (this is the first point in the call chain where calls stop being pure); assume 0 instead (the default value returned by parent_relative) since we can never have a meaningful X coordinate for the spanner at this point anyway.
Add regression tests for the issues this fixes.
Closes #4182 (closed)
Closes #4691 (closed)