Improved error handling when using GPU
Changes were made to raise a FileNotFoundError when the cuda binaries can not be found. This shifts crashing to use_gpu() instead of getting runtime errors later.
Thus, use_gpu() and load_library() raises FileNotFoundError, use_precision() warns user.