Grow Footprints isotropically using RLE operations

This gives a roughly order of magnitude performance improvement over the
convolution with a circle used previously.
Use RLE for Manhattan Footprint dilation
Use a class for the structuring element in Footprint grows.

This replaces the previous definition, based on std::map, and makes it
possible to have asymmetric structuring elements. We can therefore use the
RLE-based technique to grow in any (or all) of the up/down/left/right
directions.
Merge branch 'tickets/DM-1128'