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
Hi, @kloudkl I emailed Dr. Kaiming He for details, and he told me that this is how they perform spatial pyramid pooling:

Denote the width and height of the `conv5` feature maps (can be the full image or a window) as `w` and `h`. For a pyramid level with `n`*`n` bins, the (i,j)-th bin is in the range of `[floor((i-1)*w/n), ceil(i*w/n)]  * [floor((j-1)*h/n), ceil(j*h/n)]`.

I copied this PR and currently I am trying to implement a PyramidLevelLayer to implement this pooling behavor, based on the rectangular pooling #614.