Refactor static Output information initialization
Instead of passing all possible field values to the initialize() function, pass all relevant data in a struct. With designated initializers, it's more readable and makes code more comprehensible.
The general goal is to split Output's data in two categories - general information about the output (e.g. edid) and mutable state (position, mode, etc).
Edited by Vlad Zahorodnii