Shared col buffer between Convolution Layers

This PR replaces #517.

Inspired by conversations with @forresti about using a shared_col_buffer between different ConvolutionLayers, this PR creates a `shared_col_buffer` in `Net` to be shared by the `ConvolutionLayers`

The size of the `shared_col_buffer_` will be maximum of the sizes of the shared `col_buffer`.

Now by default, any ConvolutionLayer would use a shared col_buffer, but it can have its own col_buffer by setting the corresponding `ConvolutionParam.share_col_buffer` to false in the corresponding `prototxt`.

This PR further reduces the memory consumption of Caffe.
`share_col_buffer_` looks too similar with `shared_col_buffer_` and sounds like a verb rather than a noun. Isn't `is_col_buffer_shared_` easier for the users to quickly figure out that it is a boolean variable than `share_col_buffer_`?