Added basic device abstraction, tracing can now run on CPU and on OpenCL