deep copy for any JavaScript object