Causal Algorithmic Recourse: Foundations and Methods