use byte instruction for boolean binary ops in hopt

- use byte instead of qword instructions to perform binary operations on two booleans
Revert "Do copying with the AttachLiteral constructors."
Revert "Explicit CopyString, remove (const char*) constructors."
Fix race condition in ext/sockets/tests

This time the race condition comes from binding sockets!
Remove deprecated ContinuationWaitHandle::start()

ContinuationWaitHandle::start() was deprecated in favor of Awaitable
interface's getWaitHandle().

Remove ContinuationWaitHandle::start() from public API and rename it
internally to c_ContinuationWaitHandle::Create() that is called only from
Continuation's getWaitHandle(). Since it is guaranteed that the
Continuation does not have associated any wait handle, we can remove the
code that handles that case.
Make array_key_exists support collections efficiently

array_key_exists() was converting collections to arrays before checking if
a key exists, which is an O(n) operation (which also has the annoying side
effect of changing int-like string keys to int keys.)

This diff makes array_key_exists natively support collections (which also
addresses the pesky int-like string key -> int key issue).
Fix remaining QuickRepoJitIR test, and enable them

We intentionally drop some notices in production by default.
Add an opts file to prevent that.
Remove extraneous trace->print() causing double listings

Accidental call.
Don't leak cloned closures/continuations

Instead of appending the new closure to the end of the list,
the list was being cleared, and then the new closure was added.

Most closures only get one clone (since we don't yet support bind)
but occaisionally, closures (or continuations in closures) inside
traits can end up with more than one. In that case, we ping-pong
between the different clones, generating new clones, and new code
as we go.
Don't dereference a null array in our SIGCHLD handler

Sometimes this array is destructed by the time the handler is
called.
Fix logic fail and unsets in DefineConstant()

If we infer the type, then we already know
its integer type ID.  Trying to then parse that type
leads to "Undefined type" errors (but it still functions
due to the fallthrough).

This diff skips trying to parse a known type and thus
avoids the misleading error message.

Also guard against missing funcs/consts elements in
global scope and classes.
lots of race conditions in zlib
Remove "const char* cls" parameter from cppext static methods

For cppext static methods we have a "ti_" method that takes an extra unused
parameter "const char* cls" and then a "t_" wrapper method that calls the
"ti_" method.

This makes things unnecessarily complicated when writing HipHop extensions.
Let's get rid of the extra unused parameter "cls" and the unnecessary "t_"
wrapper method.
Improve var_export for collections

The current output of var_export for collections isn't very useful. It
outputs a call to __set_state like so:

  Map::__set_state(array(..))

This isn't particularly useful since collections don't implement the
__set_state() method, and it is also suboptimal for the design of
collections since it relies on using PHP arrays.

This diff changes var_export to use collection literal syntax for
collections instead of generating a call to __set_state().
Use a DCE-local state vector for use counts

Moving more pass-specific information out of SSATmp.
Fix program args not having a space

When inputs.size() is 1 and we have programArgs,
we wind up squashing those two values together.

Be pessimistic and always add the space in.
Remove emitSmashableFwdJump() and appendSrc()

Dead code.