Rationale:
- there was a lot of large objects passed by value, so potentially
there's a speed bump from this
- even for implicitly shared classes like QString/QList there's still
a (small) cost for copying the objects when there's no reason to
- it's the right thing to do!
Size and Rotation can be defined by an expression for all symbols
composing a marker. Width can be defined by an expression for all
symbols composing a line.
For markers, a legend is generated for varying sizes. This allows
multivariate analysis legend in the case of classified/graduated colors.
The offset is now set along with size to maintain the relative position
of symbols composing a marker.
An asistant, with preview, is accessible through the data defined button
to help the user define the size expression. Three methods are
available: Frannery, Area and Radius.
Added a widget for use in categorized/classified symbology gui to set
the expression if needed. The assistant is also available from it.
- enhanced methods for storing/retrieving QgsDataDefined in a
string map
- add method to QgsDataDefinedButton to update parameters for a
QgsDataDefined
- deprecate an unused method
- const correctness