Deep Clone II

Deep clone that also handles circular references using a visited map.