Added OperateOnBuffer to allow operating on a buffer in managed side before returning to the host (e.g. final reduction on CPU) optimising data transfer. Fixed CPU optimised reduction