mark FFI imports of synchronisation functions as safe

Although the functions themselves never call back into Haskell, marking these functions as unsafe appears to prevent ALL Haskell threads from making progress. Thus, these (possibly) long running functions need to be marked as safe, although we leave the short-running ones as unsafe, since there is quite a high overhead for a safe call.

In particular, these functions were preventing the parallel use of multiple GPUs.
mark FFI imports of Host<->Device memory transfers as safe

These also might take significant time, so allow the Haskell RTS to interrupt them. This is also the case for the memcpy*Async functions, as these are partially synchronous when given pageable host memory.

The overhead of the safe call was not noticeable on my machine, even for a 1 byte host->device transfer.
improve return code checks of stream/event query functions
improve docs for 'wait'
add 'defaultStream' helper
version bump

0.6.6.0