Split ConvToInt into subopcodes specialized by argument type.

We now have ConvArrToInt, ConvDblToInt, ConvObjToInt, ConvStrToInt and ConvGenToInt. This allows these opcodes to have separate flags.
Remove a few more uses of ClassInfo
Don't generate RaiseUndefProp in RepoAuthoritative mode

This avoids a SpillStack for simple CGetMs.  Gated under a
flag that defaults to true.
Support zend's test formats

Zend tests have 3 possible sections for test output. EXPECT, EXPECTF, and EXPECTREGEX. I think we should do the exact same thing. The .filter thing is difficult to write tests that have random numbers involved and the PHP community should already be familiar with the EXPECTF format strings.

Migration plan:

  * Kill all .filter files
  * Rename all .exp to .expect
  * Stop supporting .exp

I'm basically planning on suporting all of zend's sections as file extensions. Basically, if they have a section ##FOO## we will have a file ##test.php.foo## (where we need them).

I changed the import script to use our json encoding instead of deciphering what happened from the ##.diff## files (since not everything will have a ##.diff## file now)

We have 50 ##.filter## tests. I'll go convert them to expectf and see if they are easier to read.
kill all .filter files

.expectf can do everything these do in a more readable way.
kill default.filter and switch everything to .expect or .expectf
kill dead code
name anonymous continuations as Class::Method$continuation

As a user, this often annoyed me that I couldn't get any debugging info
out of the name and then @ahupp asked for it.

I didn't really know what to name closure ones as the name is done at
emission time. So I went with ##{closure}##. I'm not sure how I feel
about that since it will be uncorrelated with the emitted name.

While I was in there, I deleted a lot of unused code.

I'm totally open to other names and ideas.
remove support for .exp

I left in a message to read the README, but I don't know if people will see it mixed into the output.
Only compile one instance of member_operations functions

Functions declared as "static inline" in member_operations.h
end up getting compiled into each translation unit that includes that
header, leading to a lot of duplicated code.  Changing them to just
"inline" causes only instance to be used globally, which seems likely
to be friendlier to icache.
Util::string_printf should do printf style argument checking

I made a mistake adding persistent target cache to
TranslatorX64::getUsage that would have been caught.

Also adds the persistent target cache stat.
Fix interface1.php's expected output

Somewhere in the .filter consolidation and cleanup,
the bit that stripped the function name was removed. Add it
back.
Always inline opPre

opPre is marked as inline, but our current gcc version isn't
actually inlining it anywhere.  I find that surprising, because it
seems like a no-brainer: the function is small and the code gets
better when inlined (e.g., it gets rid of stores to reference params).
This diff makes the text very slightly bigger but should have good
effects on locality within the helpers.
Implement StaticLocInit in hhir

This is almost the same as tx64's implementation, with one
substantial difference: the targetcache slots hold RefData* instead of
TypedValue*. This is ok because cache handles aren't shared between
translations. I also had to rework some code in dce to handle
consuming a reference through a phi node.
Use name to be consistent with Zend in backtraces

Generators should specify function names as the name instead of the
full name for consistency with Zend 5.5 (and more importantly because
this breaks PHPUnit), this was exposed by the backtrace removal of
file and line info
Kill off .inc files

Import data from ClassInfo (sourced from class_map) instead
Optimize NewObj when no constructor is needed

Tx64 has this optimized helper path for object creation when the
default 86ctor construction is used.  Ported this to HHIR.
create .diff file even for .expectf

I'm having a tough time debugging the ##.expectf## tests because I don't have an easy diff. This is a poor man's one unless someone else is aware of a nice regex debugging thing.
remove conflict markers

Summary:
If I try to split these into non-strings, I get a commit hook error.

To get rid of them I did this:

  %s/=======*/------------------------/g
use sample dir for TCR

I made a sample directory with a file, a symlink, a dir, a recursive symlink and an empty file. Hopefully that is enough edge cases.

I tried to find all the places that used weird files and ##test## in TCR and used this dir instead.