Rename bindjcc1->bindjcc1st, bindjcc2->bindjcc2nd

Summary: They correspond to REQ_BIND_JMPCC_FIRST/SECOND.

Reviewed By: @swtaarrs

Differential Revision: D1620853
Add debugtrap opcode to vasm

Summary: This is useful for debugging. It's int3 on x64 and brk(0) on ARM.

Reviewed By: @edwinsmith

Differential Revision: D1621091
Change invariant() transformation from fb-specific to <?hh-specific

Summary: invariant() is a hack feature at this point.

Reviewed By: @elgenie

Differential Revision: D1610601
Abstract out platform dependent build steps

Summary: Previously the platform-specific steps were inline in the
benchy script. This patch abstracts that part out to a Platform object
for which any platform can provide an implementation. benchy then
decides which Platform object to instantiate based on the contents of
the .benchy file.

This patch also adds shebangs to the various scripts so that they can be
run without invoking python directly. This also enables the shell tab
completion to work correctly for branches.

Reviewed By: @jdelong

Differential Revision: D1620328
Revert "Unroll AKExists into a series of comparisons on small static arrays"

Summary: This reverts commit a8d16eb4b23374b10a8921e4b50312923c9bd450. It exposes
a serious bug in simplifier which we need more time to fix. It was
D1599893.

Reviewed By: @edwinsmith

Differential Revision: D1623014
typechecker: param unpacking calls (parsing) [1/3]

Summary: ... parser support only in this diff. The typechecker doesn't
 do anything useful with the result yet.

Reviewed By: @int3

Differential Revision: D1619854
typechecker: param-unpacking calls (naming) [2/3]

Summary: Modifies the named AST to support `f(...$unpack_expr)` calls

Reviewed By: @int3

Differential Revision: D1620284
typechecker: param-unpacking calls (typing) [3/3]

Summary: Modifies the typechecker to support `f(...$unpack_expr)`
 calls. The typechecking of params prior to the unpack proceeds as
 before.

 Unfortunately, the typechecking that can be done with an
 unpack_expr is somewhat limited:

  - we don't track size of containers as part of the type, so too-few-args
    arity checks are quite toothless
  - `$unpack_expr` is a container, not a tuple, because it's exceptionally
    likely that appending to the unpack is going to be desirable. Since tuples
    are immutable, code that might use them may be refactored:

     $args = tuple($a, $b, $c);
     call_func(...$args);
     // .. can be ..
     $args = tuple($a, $b, $c);
     call_func($a, $b, $c);

 However, that's still waaaaay more typechecking than is applied to
 call_user_func_array.

 TODO: __constructors , "special" functions

Reviewed By: @int3

Differential Revision: D1620310