improve: improve handling of multiple channels in image buffer programs

many programs that tried to handle images with different number of channels had multiple versions of each functions
this was getting quite complex and needed an improvement
non-vector buffer programs are now compiled with the number of channels as a macro defined in a compiler argument (NBCHAN)
this macro is used in Buffers.h to define TYPE, REAL and DOUBLE that can be used to write programs that can handle 1 to 4 channels
the proper program version is selected automatically
this has also allowed to add support for multi-channel images buffers for morphology operations, which was not supported before