Rectangular pooling

Implemented rectangular pooling, allowing pooling with different kernel_size, stride and pad along each axis.

I will add tests soon and update.
The pad, kernel_size and stride shouldn't have default values if you want to use their h/w versions as in the code the latter ones are ignored if the former ones exist.