Use unique_ptr to manage ownership of GCOVFunctions, Blocks, and Edges.