opencl: workaround for compiler bug in Apple opencl implementation

Apple's implementation fails during init of private filter array. we use global
of a 2D filter array, initialized from host instead. slightly slows down processing on very
fast devices (HD7950) but speeds up processing on some others (GTS450)
lua : make typeid functions actually be typeid based and not name based
lua : create a generic way to handle singletons

we have enough of these that they deserve proper handling
lua : only have ipairs if we have len
lua : remove a stray \n in preference description
lua : when introspecting in debug mode and an object has no metatable, report it
opencl: make all numerical float constants well-behaving; fixes #9478

the ability to properly parse valid float constants has been taken away
from recent OpenCL compilers for whatever reason. so we need a workaround.
grain: allow finer grain
(cherry picked from commit 5839209d9262008088809dfdaa78efd2a5f3959f)
lowpass: don't exagerate default blur
(cherry picked from commit 2d1b641425677f8d4a4a499ef0b11475428c978d)
update of dutch translations
add strlcpy() implementation for UTF8 strings

and use it where applicable
masks: first steps for restricted masks edit mode
noise profile: canon eos 1100D is eos REBEL T3
noise profile: power shot s95 by pawel zogal
masks: implement restricted edit mode

you enter restricted edit mode by CONTROL-click on the "show masks and edit"
icon. in restricted edit mode shapes are protected against accidental deleting,
shifting and enlarging/shrinking. you can still act on single nodes and on the
feathering border. main purpose: eases fine-tuning of shapes (esp. path shapes).
Merge branch 'mymasks'
blending: repair most of blendop parameter sets that got broken recently

breaking of parameter sets did happen when legacy history stacks were
converted to the new structure by the recent development branch. this commit
allows darktable to automatically fix most of the broken blendop parameter
structures (see bug #9466)
Metadata viewer: indicate that the focal length is given in milimeters
Metadata viewer: don't display invalid/unusable "focus distance" values
colorize module: fix color conversion matrix

the old version had a wrong matrix which caused a color shift - visible
e.g. as a blue tint when saturation is set to zero. of course legacy
history stacks are preserved and process as before.