first pass changes to BackendClass to work with CUDA backend
more changes to Backend class

- rename compileFun -> compileFun1
- rename runFun -> runRawFun1
- type of useRemote

`useRemote` is a bit of a weird one; it should really take two different backend types, but to integrate with `runRawFun1` and the CUDA backend without explicit copying via the host we need this more limited form. More thinking on this required.