types: fix copy/clone semantics of PartDataSource classes

It never worked. it kept returning the data in the old parent, instead of the
newly created parent. It took some pointer calculus to get the reference in the
new parent. The unit tests seem to agree with this patch.

The never used OffsetPartDataSource is no longer necessary then, because the
normal parts now calculate the offset themselves.

Signed-off-by: Peter Soetens <peter@thesourceworks.com>