add new theory (sets)

Specification (smt2) -- as per this commit, subject to change

  * Parameterized sort Set, e.g. (Set Int)

  * Empty set constant (typed), use with "as" to specify the type,
    e.g. (as emptyset (Set Int))

  * Create a singleton set
      (setenum X (Set X)) : creates singleton set

  * Functions/operators
      (union (Set X) (Set X) (Set X))
      (intersection (Set X) (Set X) (Set X))
      (setminus (Set X) (Set X) (Set X))

  * Predicates
      (in X (Set X)) : membership
      (subseteq (Set X) (Set X)) : set containment
option to print stats after every satisfiability or validity query