Using data.gradOutput to hold the to-be-summed gradients

Problems with split() can be avoided by using the data.gradOutput consistently.
With the made changes, the node.data.gradOutput always holds the to-be-summed gradients.