Hudson throws another gem, Giants beat Cubs 4-0