Moved common gpu functionality to core module

* moved device layer from gpu module to core module
* renamed device namespace to cudev
* created gpu_private.hpp header for some internal functionality