Some improvements to CFFI version

This PR fixes most of the CULA code so it compiles and adds some sensible defaults to the `ffi.verify` calls for include/library dirs. It also adds some old ctypes code back to make most of the cffi-branch work.


The remaining errors are due to:

- linalg.svd  not working correctly  (failing with either 'ValueError: double precision not supported' or with "culaError: -1", depending on the test)
- cumsum not working for complex128 and complex64  (nvcc throws some compiler error)

The failures all fail their np.allclose - tests at the end of their code. They are:
- test_cublasIcamax
- test_cublasIzamin
- test_cublasSgetrfBatched

(No investigation on why these fail were done)