Merge branch 'bill'

* bill:
  basic scottfree test
  checkpoint
  basic scottfree test
  fixed completion updating
function properties, type checking for strings and alists, {} macro for alists, concatFlat[] that flattens its arguments, better type strings for JS data,
hamts, function properties, 'protect' monad, wrapper functions, macro bugfix
added '|' to hamt{} macro
changed hamtPairs to generate an alist instead of an ordinary cons
hamts only support string keys at this point, so std.lsr has a type check for that
added { and hamt{ to listMacros so the tail filter will handle them
made show display quoted version of strings
updated simpleParse.lsr
Merge branch 'origin/roy'

* refs/remotes/origin/roy:
  added more keywords for syntax highlighting
  added atime, mtime, ctime to statFile primitive
  trying to add writeFile
  added keys func

Conflicts:
	core/simpleParse.lsr
Merge branch 'origin/bill'

* refs/remotes/origin/bill: (73 commits)
  updated simpleParse.lsr
  made show display quoted version of strings
  added { and hamt{ to listMacros so the tail filter will handle them
  hamts only support string keys at this point, so std.lsr has a type check for that
  changed hamtPairs to generate an alist instead of an ordinary cons
  added '|' to hamt{} macro
  hamts, function properties, 'protect' monad, wrapper functions, macro bugfix
  added more keywords for syntax highlighting
  added atime, mtime, ctime to statFile primitive
  function properties, type checking for strings and alists, {} macro for alists, concatFlat[] that flattens its arguments, better type strings for JS data,
  trying to add writeFile
  fixed error in parse filters
  converting
  more conversion
  more conversion
  more continuation conversion
  converting ast generator from continuation-based
  type checking, pluggable REPL prompt, show for cons and nil
  added keys func
  fixed error in node.coffee's statFile,
  ...
changed hamtPairs to use strict, internal cons, instead of Leisure cons, for internal stack management (using Leisure alist for result); factored out lambda code generation, to prepare for full-application optimization;
trampoline tests
improved look of trampoline test for easier reading
fixed trampoline -- it strictifies the args, now
make REPL print error if stack is unavailable
converting codegen to use resolve(x) instead of x()
converting codegen to use resolve(x) instead of x()
converting codegen to use resolve(x) instead of x()
converting codegen to use resolve(x) instead of x()