FactorJoin: A New Cardinality Estimation Framework for Join Queries