Create new objects by cloning an existing instance rather than instantiating from scratch — the clone must be fully independent: mutating it must never affect the original.
Implement `ShapePrototype.clone()`, returning a new, independent ShapePrototype with the same type/color.
solve(type, color, newColor) clones a shape, changes the clone's color to newColor, and returns both { original, clone } — proving the original is untouched.
Sample tests