Refactor metrics into their own C++ file
By splitting the declaration and definition of the metrics, we can further reduce compilation time needed to change them.
By splitting the declaration and definition of the metrics, we can further reduce compilation time needed to change them.