Put bytecode control flow on a build flag

Summary: We want to be able to test these via build flags.

Reviewed By: @ottoni

Differential Revision: D1514992
Don't shrink String arguments to trim() in place

Summary: The jit expects to decref the arguments to trim() after the call, and
expects to be able to keep the pointers to the args in callee-save registers
across the call.  This assumption causes a problem in the test case, in which
an argument with a single reference is shrunk in-place during trim.  The shrink
allocates a new, smaller buffer, and frees the old one (because it has a refcount
of 1).  The jit isn't aware of this, and also tries to decref and free the
argument.

This diff fixes the problem by always wrapping the possibly-shrunken StringData
to be returned in a new String.

Reviewed By: @markw65

Differential Revision: D1515837