Following up on the comments in https://reviews.llvm.org/D144108 this
patch refactors the im2col conversion patterns for linalg.conv_2d_nhwc_hwcf
and linalg.conv_2d_nchw_fchw convolutions to use gather semantics for the im2col
packing linalg.generic.
Follow up work can include a similar pattern for depthwise convolutions
and a generalization of the patterns here to work with any LinalgOp as
well.
mark private functions as static and add a doc