tweaks to sf-poly.fst (see NS comments); improved encoding of uvars
Got rid of all uses of heterogenous equality from SF files

as suggested by Nik
higher-rank polymorphism in sf-poly.fst
Added restriction so that SMT-LIB division matches OCaml/F# int division

Not sure how useful this is given that F*/SMT-LIB arbitrary precision
ints don't soundly match OCaml/F# bounded ints in more fundamental ways.
We'll need to return to this problem at some point.
proving prod_curry/prod_uncurry/test_map3 in sf-poly; still working on that file
SMT encoding implicitly curries the type-binder prefix of a function type, to handle the common case of ML types; one more goal in sf-poly goes through
more sf-poly higher order examples; need to explicit curry
smarter lazy encoding of terms to avoid redundant SMT coding
added support for closures in the SMT encoding; sf-poly verifies completely
UNSTABLE VERSION (switching machines); trying out better notation for explicit currying
improving notation for explicit currying; fixing correspondence between annotated type and definition
fixing bug #15
fixing bug #21
fixing bug #16
checking the pre-condition of the main expression
fixing bug #25
fixing bug #23; turned top-level effects into an unrecoverable error in --verify mode
added a --full_context_dependency flag; trying to resolve bug #33, partially solved, but axioms for GADTs are not quite right
fixing bug #33 (better inversion axioms for data types, including GADTs)
performance bug fix ... needless printing of terms; thanks Catalin!