AST ffi, and provie *

AST ffi provides Pyret data definitions (in ast.arr), and one API entry point,
ast.parse.

parse :: String * String * {check: Bool} -> { pre-desugar: AST, post-desugar: AST}

The first argument is the string to parse, the second is a label for the nodes
(e.g. a path) and the third is a (designed to be extensible) options object for
specifying parsing modes --- here check mode or not.  It provides both the pre-
and post- desugar parses of the string.

Also in this commit is `provide *`, which is implemented via desugaring to:

provide {
  name: name
  ...
} end

For each name that is in a toplevel s-fun, s-let, or s-data declaration, and
also the corresponding is-* and variant name bindings for data.