Text this: Reasoning with Finite Sets and Cardinality Constraints in SMT