Implemented important remote debugging commands and other fixes necessary for phpstorm

Summary: @jlreyes: This diff gets phpstorm working with xdebug. Everything should work but I haven't had time to cleanup
or write tests.
@paulbiss: added test coverage, fixed broken tests, implemented symbol parsing

Reviewed By: @ptarjan

Differential Revision: D1515484
Fix crash due to hash collisions in POST data

Summary: Too many hash collisions in the POST data resulted in
a warnUnbalanced fatal, which was only caught by the "last resort"
catch in HttpRequestHandler::handleRequest.

This revealed a few bugs: sourceRootInfo and reqURI both contain
smart allocated Strings, but their destructors run after
hphp_session_exit() has destroyed the memory manager. Its not
clear to me why this isn't a problem when we don't fatal, but
I fixed it by splitting handleRequest to ensure the
destructors are called earlier.

This still left us with a problem where we didn't correctly
close the connection, so I fixed that too.

Reviewed By: @dariorussi

Differential Revision: D1496904
XDEBUG_PROFILE should enable profiling

Summary: Closes https://github.com/facebook/hhvm/pull/3641

Reviewed By: @JoelMarcey

Differential Revision: D1530783
Fix assert crash when autocompleting with the same thing defined twice in a file

Summary: We were hitting an assert when the same class/func name was defined twice in the same file.

This was because we were oldifying the same name twice, so the second time, it fail with:
hh_server: hphp/hack/src/heap/hh_shared.c:682: hh_move: Assertion `hashtbl[slot2].addr == ((void *)0)' failed.
@emiraga found a bunch of logs of the same error message. This should fix anything to do with the ide utils stuff. If we still see it in the logs after, it might be a bug in Typing_redecl_service.

Reviewed By: @jwatzman

Differential Revision: D1528258
Add OSS benchmarking suite

Summary: Facebook: moving out from facebook/

Reviewed By: @ptarjan

Differential Revision: D1531518
Fix PDO::bindColumn

Summary: when we call Variant.unset() all refs get lost, use Variant.setNull() instead

Fixes #2914
Closes https://github.com/facebook/hhvm/pull/3638

Reviewed By: @JoelMarcey

Differential Revision: D1530475
Set resumed flag before suspending VarEnv

Summary: Recent cleanup changed the order of operations, causing assertion checks
to fail. Make sure the resumed flag is set before attempting to suspend
VarEnv.

Reviewed By: @​aravind

Differential Revision: D1531325