Non-Parametric Causal Discovery for Discrete and Continuous Data