add h/w kernel size, stride, and pad for non-square filtering

while keeping everything working as-is.
im2col + convolve non-square filters, padding, and stride
test rectangular im2col
fix GPU indexing

Thanks to @ejaz-izy's debugging in
https://github.com/BVLC/caffe/pull/505#issuecomment-50287608
test non-square filters by separable convolution of Sobel operator

Compute the G_x kernel of the Sobel operator as a full filter and as
separable filters to check the rectangular filter output.
Merge pull request #505 from shelhamer/non-square-filters

Non-square Filters and Separated Stride and Padding
Add NetState message with phase, level, stage; NetStateRule message with
filtering rules for Layers.
Incorporate NetState{,Rule} into Solver/Net.  Net::FilterParam
includes/excludes layers based on whether the NetState meets each
layer's NetStateRule(s).
Use unified train/test nets in examples.