fix types of (Layer)SetUp, Reshape, Forward, and Backward calls

Using the type vector<Blob<Dtype*>* for outputs allows modification of
the vector itself, while it is only okay to modify the blobs pointed to
by the elements of the vector. Switching the types to const
vector<Blob<Dtype>*>& makes them more correct.
Merge pull request #945 from longjon/fixtypes

Fix types of SetUp, Forward, Backward, and gradient checker calls
Move data_mean into data_transformer remove datum_* from BaseData

Conflicts:

	src/caffe/layers/memory_data_layer.cpp
Fixed MemoryDataLayer to make it work with pycaffe
Make lint happy
Initial cv::Mat transformation
Added cv::Mat transformation to ImageDataLayer

Conflicts:

	src/caffe/layers/image_data_layer.cpp
Added transform Datum to Blob

Conflicts:

	src/caffe/layers/base_data_layer.cpp
	src/caffe/layers/base_data_layer.cu
Added transform cv::Mat to Blob
Added transform Vector<Datum> to Blob
Make lint happy
Remove Datum from WindowDataLayer

Conflicts:

	src/caffe/layers/window_data_layer.cpp
Make lint happy
Update description data_transformer.hpp
Refactor common code
Make lint happy