Making computers reason and learn by analogy: Structure-mapping engine enables computers to reason and learn like humans, including solving moral dilemmas