These two are callbacks, that should allow the user to tap
more deeply into drawing process, beyond simply specifying
the step_shape.
They are called before and after rendering each data_group
respectively, with 3 parameters
(cairo_context, group_idx, options),
to do whatever is needed that intermediate step_shape()-s
of the data group are rendered as the user wishes.
options parameter is a table of various data that could
be useful for user during drawing, such as
_graph: the widget itself.
_width and _height: graph data area drawing dimensions.
_step_width and _step_spacing: respective (non-nil) numbers.
_group_idx: currently drawn data group.
The user can add their own values to the options table to
conveniently pass data between callbacks, but all
_-prefixed keys are reserved for future use by the widget.
When group_start is nil (default), the default implementation
is used, which does cr:set_source(data group's color).
It is user's responsibility to set colors how they wish,
if they set this property to their own function.
group_start() callback may return a number, which would be added
to the x coordinate of all shapes of the current group,
i.e. shifting its bars horizontally. This can be useful e.g.
for ensuring vertical lines' sharpness. User mustn't return
more values from the callback, they are reserved for future use.
As a convenience, group_start property can be set to a number,
then this number will be used for bar shifting of all groups as
described above. The group's color will be set appropriately too,
as with group_start = nil.
When group_finish is nil (default), the default implementation
is used, which does cr:fill().