adding syntax for datatype: tokenizer (with constructor), grammar (datatype), ast (both pyret and racket: datatype, new variants, constructor), parser (datatype, variants, constructor), and parse tests (all pass except for the tests that use desugaring, as that hasn't been written yet)

Conflicts:
	src/lang/grammar.rkt
desugaring of datatype working on toy examples
datatype working
better comment on use of desugar in types-compile
Merge branch 'master' into datatype
desugaring data to datatype
remove redundant comment, extraneous nothings
Merge remote-tracking branch 'origin/master' into datatype
move s-cases to types-compile, so core language has s-cases, in order to do static checking of properties of it
fix some issues in free-ids and datatype
Just make sure this runs over new datatypes
more tests in default make test target (on this PR because focusing on testing)
Merge branch 'master' into datatype
well-formed checks for datatype variants
split these cases up by  type
support for substing into preds/binds, and some tests
on the way to substituting into bindings correctly
more substitution tests
add ffi parse field for typed core
add --print-typed-core option to cmdline, pretty print datatype