Generalize loss by allowing any top blob to be used as a loss in which
its elements are summed with a scalar coefficient.  Forward for layers
no longer returns a loss; instead all loss layers must have top blobs.
Existing loss layers are given a top blob automatically by Net::Init,
with an associated top_loss_weight of 1 (set in LossLayer::FurtherSetUp).
Due to the increased amount of common SetUp logic, the SetUp interface
is modified such that all subclasses should normally override FurtherSetUp
only, which is called by SetUp.
Add tests for the case of multiple losses, one in the middle of the
network.  Make this case work by inserting split layers (and add another
SplitInsertion test).
Add test that we can call Backward with an ACCURACY layer.  This
currently fails, but should be possible now that we explicitly associate a
loss weight with each top blob.
Net::Init can determine that layers don't need backward if they are not
used to compute the loss.
AccuracyLayer only dies when necessary.
Disallow in-place computation in SPLIT layer -- has strange effects in
backward pass when input into a loss.
Also display outputs in the train net.  (Otherwise, why have them?)
Add ACCURACY layer and softmax_error output to lenet_consolidated_solver example.
Store loss coefficients in layer; use for prettier training output.
jeff gmail