Fix circular dependency issue (#2240)
Fix circular dependency issue (#2240)

# Release Notes

Tech task: Fix circular dependency issue happening in Dartmouth.

# Additional context

I switched these over to `cattr_accessor` because I find the syntax a lot more readable. This came in from the product grouping in #2215. 

I'm not quite sure exactly why, but enabling the SecureRooms engine prevents this error from happening. I know that it appends to the `Product.types` array, but why it doesn't cause the circular dependency, I don't really understand.

That's why this was fine in open and NU since they both have the engine enabled while Dartmouth does not.
tablexi/nucore-open,tablexi/nucore-open,tablexi/nucore-open,tablexi/nucore-open