Update caffe.proto

Add pad_h, pad_w, kernel_size_h, kernel_size_w, stride_h, stride_w to support pooling on rectangle regions.
Update vision_layers.hpp

Replace pad_, kernel_size_, stride_ with pad_h_, pad_w_, kernel_size_h_, kernel_size_w_, stride_h_, stride_w_ to support pooling on rectangle regions.
Update pooling_layer.cpp

Replace pad_, kernel_size_, stride_ with pad_h_, pad_w_, kernel_size_h_, kernel_size_w_, stride_h_, stride_w_ to support pooling on rectangle regions.
Update pooling_layer.cu

Replace pad_, kernel_size_, stride_ with pad_h_, pad_w_, kernel_size_h_, kernel_size_w_, stride_h_, stride_w_ to support pooling on rectangle regions.
fixing pooling SetUp() to allow default values for stride and pad
add tests for rectangular pooling regions
fixed style errors
added gradient check for non-square pooling
Merge pull request #614 from ronghanghu/rectangular_pooling

Rectangular pooling
Composite SpatialPyramidPooling with Split, Pooling, Flatten & Concat
Pooling layer allows float heights and widths for kernels and strides