warp wide opt. to avoid atomicAdds at leaves

- figure out if the atomic adds of all threads in the current warp are
adding to the same perft counter.
-- use __shfl() and __all() intrinsics to figure this out (just 2
instructions)
- if so, use warp wide reduction (very fast) followed by a single
atomicAdd per warp.
- around 5-7% performance improvement.