add asynchronous device-device copy
apply permute combination function atomically

fixes AccelerateHS/accelerate#137