[WIP] Cutsomizable "channel" dimension for ND-tensor

This is one of the step of generalizing 4D tensor to ND tensor for Mocha. Originally, the 3rd dimension of a 4D tensor is named the *channel* dimension, and many layers operate explicitly along that dimension (e.g. `SoftmaxLayer`, `SoftmaxLossLayer`, `AccuracyLayer`, etc.).

This PR is an effort for a well-defined behavior under the case of ND tensor. The goal is to allow the user to specify which dimension to operate on for those layers, and use a default dimension that is backward compatible with the good old 4D-tensor world.