Lock the mex file to avoid Matlab crashes.

Commands like "clear all" and "clear function" causes segmentation faults or errors like these (especially after an 'init'):
 libprotobuf ERROR google/protobuf/descriptor_database.cc:57] File already exists in database: caffe/proto/caffe.proto
 libprotobuf FATAL google/protobuf/descriptor.cc:862] CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
 [libprotobuf ERROR google/protobuf/message.cc:333] Type appears to be in generated pool but wasn't registered: caffe.LayerParameter
 Attempt to restart MATLAB?
To avoid these, lock the the mex file.
Added contrastive loss layer, associated tests, and a siamese network example using shared weights and the contrastive loss.
Display averaged loss over the last several iterations
Update readme.md files of cifar10 and mnist examples. Fixed broken links.
Updated mnist/readme.md file with additional information.
test convolution against explicit reference implementation

To thoroughly check convolution, the output is compared against a
reference implementation by explicit looping. Simple and group
convolution by the Caffe and cuDNN engines are checked against the
reference.
test convolution by random weights for robustness
[docs] comment ConvolutionLayer
[docs] lenet grooming
Merge pull request #1100 from cNikolaou/issue1099

Polish mnist + cifar10 examples.
Merge pull request #1104 from shelhamer/conv-comments-tests

Document and Test Convolution
use Blob directly instead of shared_ptr for EltwiseLayer::max_idx_

This is in keeping with #742.
add abstract Layer::Reshape, and document the new method protocol
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).
enable reshaping in the forward pass

Note that calling Reshape when no reshape is necessary should be
effectively a no-op, so this is not a performance regression.
separate setTensor4dDesc from createTensor4dDesc

This will make it possible to add reshaping to cuDNN layers.
separate setConvolutionDesc from createConvolutionDesc
split off Reshape for data layers
split off Reshape for loss layers
split off Reshape for neuron layers