Allow CUDAMatrix.__init__() to not copy the CPU array

This adds a `copy_on_host` flag which determines whether to enforce copying the provided CPU matrix or not. It defaults to `True` to not change the previous default behavior (which copies the CPU matrix even if it is in the correct format).
Besides, the pull request allows to initialize a CUDAMatrix from a memory-mapped numpy array.