use Blob directly instead of shared_ptr<Blob> for bias_multiplier_

This will make layer reshaping easier and more uniform, and is
consistent with col_buffer_.
add Layer::Reshape declaration and fail-by-default
add Net::Reshape for bottom-up net rebuilding
split off ConvolutionLayer::Reshape
pycaffe: expose Net::Reshape
use Blob directly instead of shared_ptr for DropoutLayer::rand_vec_

This will simplify the implementation of Reshape by making allocation
automatic. There is no need for shared_ptr here, and this is more
uniform with buffers used by other layers.
add Reshape support to neuron layers
use Blob directly instead of shared_ptr for PoolingLayer::max_idx_

Again, this is more uniform, and will simplify the implementation of
Reshape.
add Reshape support to PoolingLayer
add Reshape support to LRN layer

Note that WITHIN_CHANNEL LRN supports Reshape, but is not very
efficient, just recreating the internal layers. This could be fixed
with some rearranging of code.
add Reshape support to SoftmaxLayer
test net reshaping
don't reallocate blobs when shrinking memory use

This allows nets to be reshaped very quickly (essentially for free) as
long as sufficient memory has been allocated. Calling Blob::Reshape in
order to free up memory becomes impossible; however, this is not a
normal use case (and deleting blobs does free memory).
remove now superfluous check from NeuronLayer::Reshape