get rid of ObjectData::HasCppClone flag...

... by replacing it with the combination of IsCppBuiltin and
 HasClone. This frees up an ObjectData flags slot.

Reviewed By: @jdelong

Differential Revision: D1100574
object data clone flags: handle c++ clone + php __clone

subclasses of c++ builtins (aka datetime) need to execute
 both the builtin's clone *and* whatever the PHP classes' __clone is.
 This unbreaks three datetime related test failures (my bad).

Reviewed By: @sgolemon

Differential Revision: D1102148
Modified findSingleTraitWithMethod so that it raises an error when there is trait collision for a trait alias

Modified findSingleTraitWithMethod so that it raises an error when there is trait collision for a trait alias

Reviewed By: @jdelong

Differential Revision: D1098140
Kill MISOFF, rename HHIR_MISOFF to MISOFF

Reviewed By: @bertmaher

Differential Revision: D1100593
add try/finally to NEWS

... it was the last major missing piece for 5.5 compat

Reviewed By: @ptarjan

Differential Revision: D1100828
Add second parameter to nl2br

Adds the optional second `is_html` boolean parameter to match the Zend
implementation. The nl2br function still needs some work to have full
parity with zend, so the zend testcases aren't moved from bad to good
yet.

Reviewed By: @JoelMarcey

Differential Revision: D1101855

Pulled By: @scannell
Improve warning message in Set::toArray()

Array has a weird behaviour where string keys that can be represented
as ints are automagically converted to ints. From the manual:

  A key may be either an integer or a string. If a key is the standard
  representation of an integer, it will be interpreted as such (i.e.
  "8" will be interpreted as 8, while "08" will be interpreted as "08").

Since Set can contain both ints and strings, we could have e.g.

  $s = Set {1, '1'}

Calling $s->toArray() gives back then a 1-element array.

We were previously raising a warning in this case, but the warning didn't
specify what was the value of the "duplicate" key. Do so.

Reviewed By: @jdelong

Differential Revision: D1096274
Get rid of x64-ARM register mapping

This gets ARM register allocation to use XLS properly.

- x2a is now just a type conversion function. This is the smoothest way
  of getting around the PhysReg::operator[] problem. I don't think this
  is the ideal way forward because it means the ARM backend is still a
  second-class citizen in a way. Any thoughts on how this should be
  done? I have a few, none of them appealing.

- Another problem I encountered is stuff within the jit (check.cpp and
  linear-scan.cpp) treating rVmSp and rVmFp specially, even though these
  are x64-specific. I want to try putting those in the X64 namespace,
  so that genuinely x64-specific usage sites have to be explicit about
  it, and then having runtime-populated rVmFp and rVmSp globals that
  depend on the current arch() for usage sites that don't care about
  platform.

- Made the IR printing stuff able to pretty-print ARM regs.

Reviewed By: @edwinsmith

Differential Revision: D1100519
Make FastCGI less magical for headers

When I changed `getHeaders()` to be the same for fastcgi as all the other transports I didn't notice julk has put in special rules to deal with the fact they weren't the same. Rip that out.

This makes `$_SERVER` contain `HTTP_HOST` instead of just `HOST`.

Reviewed By: @sgolemon

Differential Revision: D1100779
Turn IncDecOp/SetOpOP into enum classes and add hhas support for them

I'm planning to make the opcode table support strongly-typed
OA args, so I'll convert the remaining OA's to have enum classes.
After this diff, only BareThis uses an OA arg without an associated
enum class (I'll change that if making OA take a type argument turns
out to be good).

Reviewed By: @swtaarrs

Differential Revision: D1097329
Make OA arguments carry type information in the opcode table

Use this to unify all our to/from string functions for OA
arguments.  Also removes some of the remaining casting to/from
unsigned char.

Reviewed By: @swtaarrs

Differential Revision: D1098649