Tweaks to improve linker script coverage

Summary: A few functions weren't getting placed appropriately for various reasons:

- Some extension files weren't getting -ffunction-sections (I think this only applied to C sources)
- Some NEVER_INLINE functions were being put in .text.unlikely for gcc's -freorder-functions heuristic.  Since we're doing layout ourselves, I turned this off.
- enterTCHelper is handwritten asm and needed a few extra annotations to get picked up.
- Interprocedurally-optimized symbols (e.g., _bc_rec_mul.isra.2) weren't getting picked.

Reviewed By: @jdelong

Differential Revision: D1318873
add MySQL.SlowQueryThreshhold to test configs

Summary: https://travis-ci.org/facebook/hhvm/jobs/24868918 failed because of this. Lets not have a flakey travis setup.

Reviewed By: @JoelMarcey

Differential Revision: D1323649
Replace json decoder with json-c library

Summary: The license of the current json decoder used in the ext_json library
presents ackaging issues for debian, replace the library with the
MIT licensed json-c library. The integration code here is a port of
the PECL jsonc extension by Remi Collet.

There is one main outstanding issues:

* There are a few facebook specific changes to the json decoder to
  implement an FB_LOOSE flag allowing json like '{z:1}' to be valid,
  this has not been reimplemented.

There are probably a variety of smaller issues as well, the patch mearly
appears to work in some circumstances and still needs careful review.
Closes #2612

Reviewed By: @JoelMarcey

Differential Revision: D1316200

Pulled By: @ptarjan
Add specialized bytecode and IR for the silence operator

Summary: Instead of laboriously encoding this thing's behavior in bytecode, add
two bytecodes StartSilence and EndSilence that turn its effects on and
off. I added IR opcodes and runtime helpers to make the resulting
machine code compact.

Initially I thought I was going to avoid the unnamed local and store the
old reporting level on the stack instead, but that doesn't work: the
result of the silenced expression will end up sitting on top of the old
reporting level when it comes time to restore the reporting level.

Reviewed By: @jdelong

Differential Revision: D1315149
Clean up RepoAuthType assertions

Summary: Some asserts should've been an early return, and add more information
to the flogs when the asserts are wrong.

Reviewed By: @jdelong

Differential Revision: D1319134
Added ** and **= operators to HHVM

Summary: This diff adds the `**` and `**=` operators from PHP 5.6.0beta1 to HHVM.
This is done by creating a brand new opcode "Pow" to represent it.

The logic for the opcode is executed using the already implemented method `f_pow` that maps to the PHP method `pow`.
Please note that at the time of writing, the method `pow` is implemented incorrectly for certain edge cases involving non-numeric values. This will be fixed in a separate diff.

Reviewed By: @ptarjan

Differential Revision: D1288749
better error message for missing arguments and type constraint

Summary: When we encountered code like the following:

  function f(?string $arg) {}
  f(); // ... $arg is not passed

 We were emitting a message indicating that ## null ## wasn't
 compatible with the nullable ##?string##. Instead, distinguish the
 missing argument case from the following acceptable variations:

  f(null); // ... $arg is passed as null
  function f(?string $arg = null) {} // or $arg can be defaulted as null

Reviewed By: @ptarjan

Differential Revision: D1317957
support printing compile command in hhvm wrapper

Summary: hhvm wrapper with -c runs a separate compile command before
 the main command. when --print-command command would be passed, it
 would still run the compile command without echoing it.

 This diff prints the compile command when --print-command is passed,
 then still executes it (because its results are an input to the printing
 of the subsequent run command)

Reviewed By: @jdelong

Differential Revision: D1321047
Fix .section/.size for OSX enterTCHelper

Summary: .section directive wasn't right for OSX and I couldn't find
.size in the mach-o assembler manual, so go back to the way things
were there.

Reviewed By: @markw65

Differential Revision: D1324049
provide support for exit as a function

Summary: Currently there is no support for `exit` as either a function or a language construct. The following should all be valid:

```php
exit("Something went terribly wrong");

exit(1);

exit;

exit 1;
```

This pull request adds support for the function style, but `exit` should still be supported as a language construct.
Closes #2656

Reviewed By: @elgenie

Differential Revision: D1324476

Pulled By: @jwatzman
Created uncounted string in APC all the time and uncounted array more often if the InnerUncounted runtime option is on

Summary: There is no reason to create uncounted string only for top level entries and uncounted array may or may not be created also for inner array depending on cost

Reviewed By: @jdelong

Differential Revision: D1320577
Task #2905431 : Strip quotes from the result of _toDebugDisplay when showd in hphpd

Summary: When printing an object, the toDebugDisplay() returns a string and the VariableSerializer formats it as a string (appending double quotes). Removing them later if it is an object.

Reviewed By: @mikemag

Differential Revision: D1318773
Fix OutputCollection::{add,set}All() signature in .hhi files

Reviewed By: @elgenie

Differential Revision: D1321295
default fastcgi to listen on 127.0.0.1

Summary: 0.0.0.0 is a bit insecure for a default. You can still change it with
`hhvm.server.ip = 0.0.0.0`

Fixes #2352

Reviewed By: @LiraNuna

Differential Revision: D1325154
add 'classname' to hhvm as an alias for 'string'

Summary: ... this should be the minimum runtime support to enable the typechecker
 to do whatever it wants with `::class`.

Reviewed By: @ptarjan

Differential Revision: D1311174
Test master upstream of magento2

Summary: No stable release in this branch yet; switch to their branch now they support a compatible version of phpunit. While I'm here, re-record.

fixes facebook/hhvm#2660

Reviewed By: @ptarjan

Differential Revision: D1325278
Use declarative class for config options

Summary: This is the first step to supporting INI everywhere. Instead of methods on the HDF object, we need a single place that will parse whatever you give it.

The next step is to thread a parsed INI object into everywhere that these hdfs are, and then use that too.

I renamed the methods on the hdf class so I could catch them all.

Reviewed By: @fredemmott

Differential Revision: D1321384
actually parse an ini file and pass it down

Summary: This will allow ini setting as well as hdf settings to be used.

It should be noted, that this style is way worse. `ini_get` still won't work on these things, but at least the data will be used. For `ini_get` to work, we need to actually bind the memory locatin instead of returning data. I'll look at that next (for the easy cases).

Reviewed By: @fredemmott

Differential Revision: D1321438
move all testing configs to ini

Summary: Now that everything is both an ini and an hdf, lets start migrating

Reviewed By: @jdelong

Differential Revision: D1322307
renamed some ini settings

Summary: A 1:1 mapping with HDF is a good starting point, but `Eval` is just historical and doesn't mean anything, `EnableHipHopSyntax` doesn't do what it says, and `my_sql` is ugly. Any others before we go out to the world?

Reviewed By: @JoelMarcey

Differential Revision: D1323813