Fix use of uninitialized values when no ellipsoid set (fix #11848)
Fix use of uninitialized value
[layout] Add layout measurement and size classes

These classes are used for storing measurements for a layout
(QgsLayoutMeasurement) and sizes for a layout (QgsLayoutSize).
They support storing a measurement unit alongside a measurement
length/size. A new class QgsLayoutMeasurementConverter handles
conversion between different units, including converting to and
from pixels via a specified DPI property.
[layout] Create a page size registry for layout

Adds a new QgsPageSize class and QgsPageSizeRegistry singleton,
which stores and manages known page sizes
[layout] Add base classes for layout
[layout] Add measurement unit handling to QgsLayout
Start porting page items
Work on moving/resizing with units
[layout] Split unit classes into their own files
[layout] Ensure that moving/resizing items respects reference point
[layout] Create QgsLayoutContext class

Move layout rendering flags to QgsLayoutContext
[layout] Add methods for assigning feature and layer to context
[layout] Add layout object data defined methods
[layout] Port data defined item position and size
[layout] Start porting item rotation
Start porting saving data defined properties
Finish porting layout object
Better invalid expression
[layout] Add methods for encoding/decoding units to text
[layout] Add methods for encoding and decoding unit based classes