Disable some generated checking code in non-debug builds

We were generating calls to sanity-checking helpers at the beginning
of each tracelet, and also at the end of tracelets ending with a Ret*.

That's not good for performance... so only do it for debug builds. :-)
Fix an overly aggressive assert.

Functions sometimes return Refs, and we might as well predict them
as such.
Fix crash when 86sinit and 86pinit fail

If 86sinit or 86pinit failed (eg the reference unknown class
constants), and there's a user error handler, local
NameValueTableWrappers could be leaked into the backtrace,
resulting in use-after-free errors and crashes.

This fixes the issue by skipping these functions in the
backtrace (which is desirable anyway - they're just an
artifact of our current implementation).
Fix a bug in wantInlineReturn

Aravind noticed that the logic here was broken; it didn't
check enough locals when counting how many were ref-counted.  (We'll
probably want to revisit the value for kMaxInlineReturnDecRefs after
this; I'll start perflabs for a few values.)
Misc fixes

While tracking down other issues, I hit a bogus
ASSERT in sendImpl.

I also noticed some fragile code, where it would have
been possible to write "HphpArray*arr; ArrayIter(arr);"
expecting to hit the ArrayIter(const ArrayData*) constructor,
but actually hitting the const HphpArray* constructor.

The latter is a special one that skips refcounting, and skips
null checks - so force the user choose it explicitly.

Also make another special constructor more self documenting.
Ignore NonRefCounted metadata for now

The static analysis it uses isn't perfect.
Clean up some dead code and inline some used-once code in array helpers.
Don't add 1900 to years above 100 in mktime()

It differs from PHP implementation: http://git.php.net/?p=php-src.git;a=blob;f=ext/date/php_date.c;hb=d23f9194b171443cc0ff40e34915df3e73f1c486#l1414
I also see no reason for it.
Always remove the temporary file when --temp-file is passed

There are too many branches in execute_program_impl(), so to reliably
remove the temporary file, making the wrapper function do it.
Remove specialized nvSet(int, int)

This specialized set method doesn't seem to pay for itself, but its used
often enough to compete for cache/TLB with existing code.  Removing it.
Simpler circular-list logic for Sweepable and String sweep list

The sweep lists for Sweepable and StringData are circularly linked
lists, with the head pointing to an arbitrary node if the list is
non-empty, or null if its empty.  By changing the head to a node
instead of a pointer, we can remove the branches from the insert/remove
code since they don't have to check for NULL.
Fix TestDebugger-WebRequest

Fix the config file so it picks up the user name.
Skip ActRec for builtins

A number of builtins needs to access the ActRec of the calling
function in order to get context information (this, context
class, etc). Currently they do so by explicitly skipping over
the builtin's ActRec. However, when calling builtins with
FCallBuiltin, there is no builtin ActRec, and these builtins
must be marked with the "NeedsActRec" flag.

This diff eliminates the explicit skip step, and changes it so
that the innermost ActRec is automatically skipped if it is
the builtin's ActRec. With this change, fewer builtin's need to
have the NeedsActRec flag.
Refactored LdRaw/StRaw to support 4-byte loads for Strlen and fixed a Strlen bug.

Changed LdRaw/StRaw to take an enum specifying the field accessed
by the Ld/St instead of an offset. Introduced a new class, RawMemSlot that
specifies the type, size, and offset of each field accessed by LdRaw/StRaw.
Fixed a missing evaluation stack bug in Strlen. Fixed bug in encoding of int3
in asm-x64.h. Fixed bug in rematerialization of LdLoc.
Don't guard on KindOfClass.

The stack slots that hold a KindOfClass are a verifiable
static property. Don't guard on them.
Relax guards for CGetL, RetC, RetV

Use guard relaxation for CGetL, RetC, and RetV.

This diff also changes the DataType numbers to give one bit for each
type (with the exception of KindOfUninit, which is still 0).  This
enables a more efficient check in some cases, such as "uncounted but
not uninit", which is used for CGetL.
Re-analyze tracelets when IR translation fails

When Translator::analyze runs with the IR enabled, it skips
most optimizations. This is what we want to keep the instruction
stream clean for the IR, but if it has to pass the tracelet back to
TranslatorX64 for translation, the resulting code will be missing all
the optimizations that analyze would've done. Now we re-analyze the
tracelet with m_useHHIR == false if the IR translation fails.
Smarten up type calculus of Cont* instructions

- We know the type of local 0 for all Cont* instructions inside generator
  bodies: it's an object. We don't need to guard on it. I removed the typehint
  (normally added by the parser) because it results in a useless VerifyParamType
  (which results in a tracelet guard). Theoretically we should be able to derive
  the information I added in MetaInfo from the typehint, but that's for another
  day.

- PackCont and UnpackCont don't touch locals anymore.
Add support for BC mappings, translation counters, and add new kind for IR-based translations in TC dumps
Use findForNewInsert in HphpArray::add, and other tweaks

Firstly, the ArrayData add() method is only legal when the key
does not exist, so we can use the fast findForNewInsert method
when adding strings to an array.  (We already assert on dups).

Second, if we assume most find() operations on strings (for
get access) find the string on the first probe, then it makes
sense to do the string-equal check first, before the empty-pos
check.