This moves the offload entry logic into classes and provides convenient accessors. No functional change intended but we can now print all offload entries (and later look them up), tested via `OMPTARGET_DUMP_OFFLOAD_ENTRIES=<device_no>`.
Constructors and destructors on the device do not take any arguments, also not the implicit dyn_ptr argument other kernels automatically take.