Coalesce + compiler updates

-Added coalesce operator + unit tests. Currently uses values=[] as
inputs but may switch to left/right
-Added infix operator, ?? as the coalesce operator, e.g.,
  x = foo[‘US’] ?? ‘bar’;

-Added support for true and false as literals in the compiler

-Changed the semantics of index to match Hack version: when an array
index is out of range, or a key is not defined, return null. This may
then be used with coalesce

-Changes to compiler that don’t work:
 -null doesn’t work, seems to not like it when you return null as part
of the JSON blob
 -JSON literal notation (e.g., x = @{“a”:3, “b”:5};) doesn’t work, even
though it seems quite similar to the original PlanOut compiler which
supports it:
 “Lexical error on line 1. Unrecognized text.
x = @ {"a": 2};
——^”