[TopoViewer] fix layer visibility after QgsLegendInterface API changes

It was broken with 2.4, whereas QgsLegendInterface::moveLayer started
forcing layer visibility on (undocumented behaviour).

Fixes #11382
[composer] Avoid crash when using redo on multiframe (fix #11351)

Since multiframe changes can remove and create new frame items,
it's not safe to directly manipulate frame items in
QgsComposerItemCommand. Now, commands which apply to a frame always
fetch a reference to the correct frame item directly from the
parent multiframe. Also added unit tests for this crash.
use default button action instead of adding a new one (relation reference and editor widgets)
use layer's displayExpression in relation reference widget line edit
[editwidgets] text color for r/o line edits matches disabled color

Line edits are set to readonly to make it possible to copy values from disabled
forms. Unfortunately Qt uses a style that makes them look editable even though
they are not. This patches the text color to have the appearance that hints an
uneditable widget.

Fix #11413
fix deprecation warnings
fix where clase when multiple features are filtered by id (fixes #11336, fixes #11408)
allow setting visiblity of selected layers (fixes #10835)
avoid creating a histogram without range (fixes #10832)
fix geography detection (fixes #11375)
restore active window after requesting credentials (fixes #11355)
avoid creating a histogram without range (fixes #11217)
combine layer type and edit icon when editing (fixes #11411)
use layer title instead of name in server getlegendgraphic response (fixes #11406)
CAD tools, create QgsMapMoveEvent to deal with mouse event in map coordinates, QgsMapToolMapCoordinates a map tool in map coordinates
using multiple inheritance
fixes, handle several errors, display message if error
add calculation capacity using QgsExpression
remove last points, better snapping choice in filter
display error message if cad tools are not enabled