Added max_idx to Pooling layer CPU
Default mask idx is -1
Added max_idx to Pooling layer GPU
Added test for  Pooling layer GPU
Use mask_idx to compute backward Max Pooling
Remove top_data from backward Max Pooling
Set bottom_diff to 0 and remove Async memcopy
Cleaned prints from test_pooling_layer.cpp
Fixed parameter order
Use loops in GPU again to avoid over-writting of bottom_diff
Added test for maxpool layer followed by dropout
Attempt to use AtomicAdd but it seems slower
Commented Atomic Add, back to loop in GPU MaxPoolBackward
Adapted to V1 proto definition, test don't pass
lint and make compilable (using static_cast's found a couple bugs at
compile time)
remove commented out code
mask should be const in backward pass
bugfix: setting count to the top count in backward doesn't process all
of the bottom (assuming the bottom is larger, which happens for
nontrivial poolsize>1)
use a Blob<int> instead of a SyncedMemory to store max_idx_
make a Blob<unsigned int> and use in dropout layer