Takes an input ancestral graph (a graph with directed, bidirected and undirected
edges) and converts it to a DAG by replacing every bidirected edge x <-> y with a
substructure x <- L -> y, where L is a latent variable, and every undirected edge
x -- y with a substructure x -> S <- y, where S is a selection variable. This function
does not check whether the input is actually an ancestral graph.