Rectangular pooling

Implemented rectangular pooling, allowing pooling with different kernel_size, stride and pad along each axis.

I will add tests soon and update.
This is for compatibility issue with previous caffe prototype file. We don't want to require users to update their network prototype. So, the user can either provide one parameter kernel_size or two parameters {kernel_size_w, kernel_size_h}. You may see #505 for detailed reasons.