feat(object): add a ClonableSharedPointer component to deal with shared PImpl (main usage: ClonableObject)