Support arbitrary DAGs with SplitLayer

Addresses [#92](https://github.com/BVLC/caffe/issues/92) as per Yangqing's suggested implementation using SplitLayers.  Basically, this allows any blob to be used as "bottom"s multiple times in a network definition.

My opinion is that in the long run it would be better to do this in a less wasteful manner by changing the specification of Backward(...) to add to the current _diff, but this wasteful implementation is better than simply not supporting a blob shared as input by multiple layers.