CausalEGM: a general causal inference framework by encoding generative modeling