Causal inferences on the effectiveness of complex social programs: Navigating assumptions, sources of complexity and evaluation design challenges