fix bug that breaks MATLAB 2014a compilation
Merge pull request #696 from rbgirshick/matlab_2014a_fix

Fix bug that breaks MATLAB 2014a compilation
Fix SoftmaxLayerTest: forgot to change this one to use DtypesAndDevices;
was causing Travis build to randomly fail if a previous test had set the
mode to GPU (which no test that is run by 'make runtestnogpu' should, so
I guess there's another bug somewhere).
Merge pull request #698 from jeffdonahue/softmax-layer-test-devices-fix

Fix SoftmaxLayerTest: forgot to change this one to use DtypesAndDevices;
fix choice of clang++ in OS X build
[example] elaborate net surgery description
Fix Makefile warning error message.
use layer_param instead of layers_[layer_id]->layer_param()
Add param_propagate_down_ vector to layer, populate according to
blobs_lr in Net::Init
Make ConvolutionLayer and InnerProductLayer abide by param_propagate_down_
Use Blobs instead of SyncedMemorys for the bias_multiplier_'s.
Add Net Test to verify correct param_propagate_down behavior.
Merge pull request #660 from jeffdonahue/param-propagate-down

Conditionally compute parameter gradients
Add top_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.