Nonlinear ICA Using Auxiliary Variables and Generalized Contrastive Learning