Object.clone() with deep cloning support