[FIXED] #11572 Filter Legend By Map Content doesn't maintain point displacement legend

The fix from https://github.com/qgis/QGIS/pull/1673 has to be enhance to have
 something more generic.

This fix add methods to QgsPointDisplacementRenderer:
* capabilities
* symbolForFeature
* originalSymbolForFeature
* symbolsForFeature
* originalSymbolsForFeature
* willRenderFeature
Merge remote-tracking branch 'rldhont/filter_legend_displacement_point2'

Conflicts:
	src/core/qgsmaphittest.cpp
Add note about QgsMapCanvas::refresh() behavior
[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