Create staticEmptyString to speed up empty string

Summary: Create a parallel to staticEmptyArray() to speed up uses of the
empty string.

Reviewed By: @markw65

Differential Revision: D1356274
libmysql cmake fixes for compilation errors in Gentoo and other distros

Summary: Closes #2815
Fixes #1531

Reviewed By: @ptarjan

Differential Revision: D1359452

Pulled By: @JoelMarcey
fix soap calls for objects with __call

Summary: Once again not quite sure how to work this into a HHVM test (like my previous PR #2505).

When the soap object has a __call method we should consider it as a valid function and let the VM deal with it.
Closes #2820

Reviewed By: @ptarjan

Differential Revision: D1359394

Pulled By: @JoelMarcey
fix SimpleXML::addChild with empty namespace

Summary: In this case an empty string and null result in different behaviors.
See https://github.com/php/php-src/blob/PHP-5.6/ext/simplexml/simplexml.c#L1674
Closes #2818

Reviewed By: @ptarjan

Differential Revision: D1359308

Pulled By: @JoelMarcey
Revert "Implement type hierarchy for interfaces"

Summary: This reverts commit fa23cfbca5ba3ecb3eb60ef56029c379c2722927.
The Class::subtypeOf function isn't correct, and the logic is a bit
complicated so I'd rather revert for now than try to figure out how to
do it better.  (aravind: if you want to look, I think the issue is
that it's not clear what a non-empty interface list in a res::Class is
supposed to mean.)

Reviewed By: @dariorussi

Differential Revision: D1359861
Add a regression case for a bug we had in res::Class::subtypeOf

Summary: Adding in its own diff so the revert diff can be re-reverted
if we want to fix it.

Reviewed By: @dariorussi

Differential Revision: D1359897
cmake profiles for building

Summary: Different modes CMake build, examples of usage [profiles](https://github.com/denji/hhvm/commit/d971239f31#diff-3e1d1439ed0b241d4bcf9f0f5cb35da4R14):
```
-DCMAKE_BUILD_TYPE=[None|Debug|Release|RelWithDebInfo|MinSizeRel]
```

More information: http://bit.ly/1hpbbyk
Closes #2819

Reviewed By: @ptarjan

Differential Revision: D1359856

Pulled By: @JoelMarcey
unset() on ArrayObject is supposed to raise a notice if undefined key is passed

Summary: PHP throws a notice when trying to unset() or offsetUnset() key which aren't defined

I'm not sure if this is the right approach to get the appropriate error
Closes #2821

Reviewed By: @ptarjan

Differential Revision: D1359933

Pulled By: @JoelMarcey
Functorize type-at-pos

Summary: This is something else that would be nice to share

Reviewed By: bhosmer

Differential Revision: D1354822
Suggest command

Summary: Add a unimplemented suggest server command

Reviewed By: bhosmer

Differential Revision: D1355457
Fix deduplication, take 3

Summary: The previous approach failed to maintain insertion order. This
will maintain sort order for the cookies we actually send down to the
client regardless of whether deduplication is enabled

This fixes Github Issue #2758.

Reviewed By: joelm, fredemmott

Differential Revision: D1358654
Move loadClassCtor to translator-runtime where it belongs

Reviewed By: @jdelong

Differential Revision: D1360740
Check in exchangeArray() as in ctor whether to store an array

Summary: __construct() checks if it's an instance of ArrayObject or ArrayIterator and then saves an array copy
exchangeArray() is supposed to follow the same behaviour

Resolves #2791

The segfault however might still be there somewhere.
Closes #2814

Reviewed By: @ptarjan

Differential Revision: D1359493

Pulled By: @JoelMarcey
Fix tracelet selector jump traversing

Summary: - The logic to only trace through a backwards JmpNS was just wrong: I
wrote the conditions incorrectly and they disagreed with the comment and my
intent.
- I originally set it up to always trace through conditional jumps with a const
source, but this differs from analyze() and isn't strictly better. I changed it
to only do so while inlining.

Reviewed By: @jdelong

Differential Revision: D1360207
Add option to explicitly turn on tracing

Summary: Sometimes it is useful to be able to use tracing without using a debug build. Clearly somebody already thought of this, since there is a `USE_TRACE` define already floating around. This adds an option to CMake so you can pass `-DENABLE_TRACE=1` to `cmake` and get tracing.

Good for initially debugging things without having to do a full debug build.
Closes #2836

Reviewed By: @fredemmott

Differential Revision: D1361091

Pulled By: @JoelMarcey
DOMNode::lookupNamespaceUri should return default namespace when null is passed

Summary: `null` was casted to a `string` because of a wrong IDL config. This diff allows `null` to be passed and returns the correct result including type checking.

Reviewed By: @ptarjan

Differential Revision: D1357983
Fix TransBCMapping

Summary: We weren't updating it after relocation. D1356644
attempted to fix it by using mcg->code.*, but that doesn't
work either, since those code blocks aren't being updated
at all.

Reviewed By: @ottoni

Differential Revision: D1359096
FNon-class properties of ArrayObject are now actually serialized.

Summary: Fixed a bug with the serialization of ArrayObjects so they are now actually serialized and unserialized with the rest of the object.

Reviewed By: @ptarjan

Differential Revision: D1359953
Require gcc 4.8 for the open source build

Summary: We wanted to kill 4.7 with fire anyway, but now we actually have to or we will break the build.

For example, D1356667 will actually not compile with 4.7 since functions like `is_trivially_destructible` are not available in the `type_traits.h` header there.

Reviewed By: @scannell

Differential Revision: D1361595
Don't rename closures many times

Summary: If two threads are emitting the same closure, they both will rename it and only the second name will be used when defining the closures so the first name won't even exist. Instead, lets just not save the name and name it locally.

Reviewed By: @markw65

Differential Revision: D1361287