How Causal Abstraction Underpins Computational Explanation