General Latent Feature Models for Heterogeneous Datasets