Blobs are ND tensors instead of 4D arrays.

vector<int> shape_ instead of (num, channels, height, width).
InnerProductLayer weights are 2D; biases are 1D (incompatible w/ old
saved nets?)
LossLayer output is 1D
EltwiseLayer need not assume old 4D dim names
FlattenLayer: generalized Blob dims
common_layers.hpp: remove unused "Blob col_bob_"
TestConcatLayer: fix style errors
TestConcatLayer: add forward/gradient tests for concatenation along num
ConcatLayer: generalized Blob dims
SliceLayer: generalized Blob dims
SoftmaxLayer: generalized Blob dims
SoftmaxLayer: use caffe_set instead of loop
SplitLayer: change Reshape(n,h,c,w) to ReshapeLike(...)
HDF5DataLayer outputs according to HDF5 dims
DataLayer outputs 1D labels
MemoryDataLayer outputs 1D labels
ImageDataLayer outputs 1D labels
WindowDataLayer outputs 1D labels
InnerProductLayer can multiply along any dimension