Abstraction and Analogy-Making in Artificial Intelligence