MetricGroups currently form a bi-directly graph, usually with explicit requirements that type the parent must have. For example, an OperatorMG has a hard requirement that the parent is a TaskMG.
As a result they are quite inflexible, which particular shows in tests, as you can't just create one metric group, but have to build an entire tree.
The end goal of this ticket is to remove AbstractMetricGroup#parent, and along the way we'll decouple the various MG implementations from each other.
|Encapsulate component meta data||In Progress|