Remove die() and exit()

Summary: These functions do still exist but not in HNI anymore as they were only used by the following syntax:

```php
$x = "exit";
$x();
```

Part of #3525.
Closes https://github.com/facebook/hhvm/pull/3552

Reviewed By: @sgolemon, @ptarjan

Differential Revision: D1512234
VASM part 7: use a Vreg temp in ArgGroup, finish removing m_rScratch

Summary: Finish converting remaining uses of m_rScratch to virtual (temp)
registers, and extend ArgGroup to allow srcs to be Vreg temps.
refactor shuffle2 into a copyTV helper functions.

Reviewed By: @alexmalyshev

Differential Revision: D1460426
VASM part 8: add Vloc

Summary: Vloc is like PhysLoc; its the holder for the virtual registers we
assign to an SSATmp. Helpers taking Vout generally need to take Vreg
and Vloc parameters instead of PhysReg and PhysLoc, to prepare for
the next diff, where code generation uses virtual registers for
nearly everything.

Reviewed By: @alexmalyshev

Differential Revision: D1460430
typechecker: Fix column numbers in errors.

Reviewed By: @pikatchu

Differential Revision: D1512788
lexer: Remove dead code.

Summary: While trying to grok the codebase, I realized that this function was never getting called.

Reviewed By: @elgenie

Differential Revision: D1499849
Add support for registering and using an externally supplied Profiler,

Summary: as for example from a 3rd party DSO.

While I'm at it, plumb in instantiation of the pre-existing experimental
MemoProfiler.

This PR replaces https://github.com/facebook/hhvm/pull/3082. This PR
is simpler than that proposed before, since the old work is supplanted
in large part by recent work for debugger hooks.  There were too many
git branch conflicts to warrant preserving the commentary of 3082,
most of which is no longer relevant.
Closes https://github.com/facebook/hhvm/pull/3533

Reviewed By: @ptarjan

Differential Revision: D1508210
Fix maxlinelen

Summary: Fix fgets to read up to `length -1` instead of `length`
Also fix `SplFileObject::fgets` to include the `maxLineLen`

I moved all good tests found in `standard/file`
`fgetss_basic2.php` `fgetss_variant3.php` are fixed by this diff.

Closes https://github.com/facebook/hhvm/pull/3553

Reviewed By: @ptarjan

Differential Revision: D1512238
Fix arcs inserted for bytecode control flow within a region

Summary: Profile translations can contain multiple blocks. So, when inserting
arcs into a region, an arc should always go from the last block in the
source profile translation to the first block in the dest profile
translation.  While inspecting the code, I found some cases where this
wasn't the case, which are fixed here.

Reviewed By: @alexmalyshev

Differential Revision: D1512204
Don't 'return' from void methods.

Summary: Fix several MemoryManager methods to simply execute their final statements,
rather than prefixing them with 'return'.

Reviewed By: @edwinsmith

Differential Revision: D1509675
Fix up walkstk command

Summary: Two fixes to `walkstk`:

- If HPHP::mcg is corrupted, use a simple heuristic (is the
  corresponding native frame a normal, nameless frame?) to decide if
  we're in the TC.  This complicates the logic a tad but makes the
  command more reliable.

- Don't omit the initial frame.

Reviewed By: @markw65

Differential Revision: D1511373
Fix bugs in `hhx` for RATA immediates

Summary: I thought I fixed some of these in a previous diff, but apparently not.

Reviewed By: @alexmalyshev

Differential Revision: D1511765
Fix output buffer exception handling

Summary: Our ob_* system diverges from PHP5's in a number of ways.  This fixes
some or all of those issues, so that now we have the following:

- We prohibit calling ob_start() from inside an ob handler.

- If we throw from a handler, or from __toString() on its return value,
  rather than dropping the buffer's contents and swallowing the
  exception, we promote or print the buffer's contents and then throw.

Reviewed By: @markw65

Differential Revision: D1505602
Smooth a wrinkle in HHVM's safesort impl

Summary: HHVM's safesort algorithm (which is used by a number of sort builtin
functions) was adapted from a C++ sort algorithm that required the C++
comparator implementations to return true if left is less than right,
false otherwise. This didn't jive particularly well with some existing
(admittedly hacky) PHP code that would return boolean true if left was
GREATER than right, false otherwise. As a result, there was a wrinkle in
HHVM's C++ comparator logic to compensate for such cases by invoking the
PHP comparator a second time when the first invocation returned boolean
false.

This diff gets rid of the wrinkle by changing the safesort impl (and
associated logic in HHVM) to expect C++ comparators that return true if
left is GREATER than right, false otherwise (props to@markw65 for
suggesting this a while ago). I also added a bunch of comments to explain
what's going on to avoid confusion going forward.

Reviewed By: @markw65

Differential Revision: D1468458
Don't JIT warmup docs, nor count them as Eval.JitProfileInterpRequests.

Summary: Don't JIT warmup docs, nor count them as Eval.JitProfileInterpRequests,
because they are not normal requests.

Rename Eval.JitWarmupRequests to Eval.JitProfileInterpRequests, in order
to distinguish interpreted profiled requests from warmup requests that
have no purpose besides loading metadata into memory.

Reviewed By: @jasone

Differential Revision: D1502407
Fix normalization of URLs

Summary: Took 3 steps forward and 1 step back with the new normalization of ini settings

URLs became `ur_ls`. That's not good.

Special case it so they become `urls`

Reviewed By: @paulbiss

Differential Revision: D1512894
Make fbmake test runs more noisy

Summary: fbmake requires test output every x minutes. This should do the trick.

Reviewed By: @ptarjan

Differential Revision: D1512500
Fix ini files based on new normalization

Summary: D1511106 gaves a newer normalization technique. We need to modify some of our ini files
to reflect that.

Reviewed By: @paulbiss

Differential Revision: D1512797
Makes <<__Memoize>> work for top-level functions

Summary: It's a little silly to apply <<__Memoize>> to a top-level function with zero args, but with this diff the attribute can be tagged to every kind of function we want to build for. That way, as I add args it will work for all of them.

For tests, I couldn't actually figure out how to apply user attributes to inline functions without it being a syntax error. If you know how to do it I'll add a test.

While working on this diff I found that locals from the implementation were incorrectly also being emitted as locals in the memoization wrapper. This diff fixes that issue.

Reviewed By: @jano, @elgenie

Differential Revision: D1506790
Remove vasm dead code

Summary: This stuff was needed during transition, but now it's dead.

Reviewed By: @alexmalyshev

Differential Revision: D1513877
Implemented xdebug feature_get and feature_set commands

Summary: This diff implements the xdebug remote debugging commands feature_get
and feature_set. Like the name implies, these allow you to get and set
the features supported by remote debugging.

These are the first commands intended to be sent/received when starting
a debugging session, so these are important. Right now the results are
identical to xdebug (which is a lie because not all features are implemented).

Each command is also considered a feature, so this required me to implement the
stubs for each remote debugging command, which is why this diff is so large.
Most of the code is boilerplate, the most of the added logic is in the feature
get and feature set commands.

In this diff I also move `XDebugServer::initDbgp` and `XDebugServer::deinitDbgp`
into `XDebugServer::attach` and `XDebugServer::detach`. This way commands can
assume `XDEBUG_GLOBAL(Server)` always exists. It was nonintuitive that it
didn't, so I felt this was important for maintenance purposes.

Reviewed By: @ptarjan

Differential Revision: D1502891