pycaffe: allow unspecified mean. Fixes #671.
pycaffe: reorder exceptions

It doesn't make sense to complain about input not being batch-sized if
it isn't even 4-d in the first place.
pycaffe: test channel_order and input_scale against None

An input_scale of zero should produce warnings/errors/infinities rather
than being the same as an input_scale of one. A channel_order of () or 0
should not be equivalent to the default ordering.
gflags 2.1 bugfix (or rather a hack).
fixing comment
Merge pull request #733 from longjon/pycaffe-tweaks

pycaffe fixes
lint
Merge pull request #812 from Yangqing/sweep

gflags 2.1 bugfix (or rather a hack).
Add NetState message with phase, level, stage; NetStateRule message with
filtering rules for Layers.
Incorporate NetState{,Rule} into Solver/Net.  Net::FilterParam
includes/excludes layers based on whether the NetState meets each
layer's NetStateRule(s).
Add INPUT layer so deploy nets can be incorporated as well.
Use unified train/test nets in examples.
Add loss_weight to proto, specifying coefficients for each top blob
in the objective function.
Add net tests for loss_weight -- check that the loss and gradients
throughout the net are appropriately scaled for a few loss_weight
values, assuming a default weight of 1 in the loss layer only.  Also
modify test_gradient_check_util to associate a loss of 2 rather than 1
with the top blob, so that loss layer tests fail if they don't scale
their diffs.
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?)