Major refactoring
A lot of things have changed:
- Replace the joulesAtRead and misc members of the State with name_, joules_ and watt_
- The dump thread now also repeatedly queries the backend for a new measurement
- A call to Read returns the most recent measurement, instead of triggering a new one
- The backends no longer need to stop the dump thread
- Remove defunct Likwid backend (use Rapl as alternative)
- Update CMake for ROCm for new include directory structure of recent ROCm versions
- Apply Google Style throughout (methods CamelCase, variables like_so_with_underscores, member variables with trailing underscore, include guards, nested namespaces, Impl naming)
- Python interface calls C++ seconds, joules and watts, rather than reimplementing
- Move backend specific State class outside the Impl class definition
- Rapl uses a fixed measurement interval
- Set default device for Xilinx backend