Merge pull request #545 from jamt9000/im2col-kernel-test

Test for im2col kernel
Update Makefile.config.example

fix some typing error
fix uninitialized variable warnings in tools
acknowledge BVLC PI Trevor Darrell for advising Caffe
Separate layers relatively independent of images out of vision_layers
Arrange the data layers to be in alphabetical order
Organize the loss layers in alphabetical order
add EqualNumBottomTopBlobs() property for layers; use in
ConvolutionLayer
ConvolutionLayer can take N bottom blobs and N top blobs
Merge pull request #609 from jeffdonahue/multiconv

Generalize CONVOLUTION layer to multiple inputs/outputs
report UVA in platform test
switch to unified virtual addressing CUDA memcpy

Host / device copies are distinguished by the virtual address of the
pointers instead of explicit memcpy modes.
replace softmax cudaMemcpy with caffe_gpu_copy
do all caffe_copy() as UVA mem copy, and drop caffe_gpu_copy()

Do all memory copies by `cudaMemcpy` in UVA mode so that the same
`caffe_copy()` interface works for all transfers.

`cudaMemcpy()` is used in lieu of BLAS copies because they do not
understand UVA.

Drop the now unnecessary `caffe_gpu_copy()` since location of the
pointers is now irrelevant to the interface.
replace all memcpy by caffe_copy
replace all memset with caffe_set() / caffe_gpu_set()

...except for `SyncedMem` since it has no type.
reduce caffe_copy to instantiations, split off caffe_memcpy for void*
fix casts (static for void*)
Merge pull request #602 from kloudkl/layers-in-order

Layers in order
Merge pull request #555 from shelhamer/uva-memory

Switch to Unified Virtual Address memory copies