Learning Functional Causal Models with Generative Neural Networks