Blobs are ND tensors instead of 4D arrays.

vector<int> shape_ instead of (num, channels, height, width).
TestBlob: test that legacy BlobProtos are correctly handled by ShapeEquals
InnerProductLayer weights are 2D; biases are 1D
InnerProductLayer can multiply along any dimension
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