Conv b

Convolution method very not elegant 
room for more options with edge handling
Using template for abstraction, could go for sane defaults instead.
@m0hamed @Hoss93