Test for im2col kernel

With associated Makefile changes for .cu tests

This tests that the grid-stride loop works for im2col,
using the CPU version as a reference.
Fix building tests with parallel make

The changes for .cu tests meant that creating
TEST_BUILD_DIR wasn't happening first
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
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*)