A Branch-and-Bound Algorithm for MDL Learning Bayesian Networks