Learning Differentiable Logic Programs for Abstract Visual Reasoning