Improve reduce_on_gpu kernel for nvidia devices + creation of a SMA example

For nvidia device, the reduction operation inside a warp can be optimized. The optimization is valid for all nvidia's device with warpsize >= 32 (actually they all have warpsize == 32 right now)
the speed is increased by 5 to 10% with that optimization.

I also added a simple moving average example. Can be improved using the KahanSum operator for more precision during the scan (or using double if it's supported)