Implement SpatialPyramidPoolingLayer with the Split, Pooling, Flatten & Concat layers

The spatial pyramid pooling layer [1] mentioned in #548 is the combination of the existing PoolingLayer and ConcatLayer. It automatically computes the sliding windows sizes and strides for the multiple pyramid levels, applies the PoolingLayer on each level, and finally concatenates the outputs of all the levels into fixed-size vectors to feed into classifiers or fully connected layers.

[1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition. The 13th European Conference on Computer Vision (ECCV), 2014
While this is written in Kaiming's paper, I guess there will be some problems with this pooling approach. For example, if `image_side_length == 17` and `spatial_bin == 6`, then you have `kernel_size == 3` and `stride == 2`, so you actually get 8*8 bins, instead of 6*6 bins. @kloudkl Could you tell me whether I am right?