Fix Memcached::(inc|dec)rement(ByKey)? when ASCII protocol is used

Summary: We weren't correctly dispatching to the right memcached_* function,
causing it to always fail when using the ascii protocol. There's still one
divergence from PHP5: if an initial_value is given but the connection is using
the acsii protocol, PHP will raise a warning and return false, but we'll
silently ignore the initial value and continue on with the increment. Details
are in the comment.

Closes https://github.com/facebook/hhvm/issues/3839

Reviewed By: @ptarjan

Differential Revision: D1579907
Stop returning systemlib data in Reflection

Summary: I removed a slow test, because I copied it and added more function to test on.

Fixes #3852
Closes https://github.com/facebook/hhvm/pull/3857

Reviewed By: @ptarjan

Differential Revision: D1580841
Typing of multi-argument array_filter

Summary: This is the same as single argument one, except it doesn't remove the nullability from the value type.

Reviewed By: @jwatzman

Differential Revision: D1575720
Improve Result creation in HHVM

Summary: Most of our users (from conversions) still get the result as a Vector of Maps, this was super slow. But it is the easiest way for them to access the results. With this diff, we should probably gain perf and memory in the existing code that uses the map. We are no longer duplicating the strings.

Major optimization but simple! Each time we pass to map a `const char*`, it actually creates a HPHP::String. We don't actually want this! We want it to ref the only one copy of the fields, we actually have only one copy in the C++ side, but the extension doesn't.
Ref: diffusion/FBCODE/browse/master/hphp/runtime/base/type-string.h$133-137,160-163

Adding FieldIndex class, which holds the HPHP::String for each column. This way even using our slow buildRows, we won't have the duplication by simply passing HPHP::String around.
Sometimes we don't have RowFields, because the query is empty, or doesn't have this kind of result :). I preferred to still instantiate FieldIndex just to avoid having a shared_ptr that is nullptr.

Removing some duplicated code and putting the field interpretation in one place.

Adding `at` to MysqlRow so users of this interface don't need to make a call saying the type of the field, but just getting a mixed. The goal with this was to have a simple interface for MysqlRow so the acceptance would be bigger.

Some naming conversions are inconsistent here, but I'll leave to fix them later.

Reviewed By: @chipturner

Differential Revision: D1570690
xenon: move into its own directory, cleanups

Summary: - move into runtime/ext/xenon
- add 'noexcept', 'const' where appropriate
- migrate from 'static' to anonymous namespace
- final class xenon
- 'override' on inherited virtuals

Reviewed By: @jano

Differential Revision: D1581855
remove async stacks from xenon

Reviewed By: @jano

Differential Revision: D1582160
Fix spelling of IMAGICK_COLOR enum

Summary: Not important, but it looks silly

Reviewed By: @alexmalyshev

Differential Revision: D1580239
Enable static polymorphism where safe.

Reviewed By: @jwatzman

Differential Revision: D1568599
Fix a leak in HNI ActRec functions

Summary: They don't free their extraArgs. Since the main reason
for using an ActRec function is to allow extra arguments, this
seems like it might be quite common.

Reviewed By: @edwinsmith, @jdelong

Differential Revision: D1580527
ArrayUtil::RegularSortUnique(): pre-allocate array based on unique count

Reviewed By: @elgenie

Differential Revision: D1580109
An async method's return annotation (if there is one) must be "Awaitable"

Summary: This takes the first step for improving return type enforcement for async
functions. We enforce that if there is a return type annotation, it must be
"Awaitable" or "Awaitable<T>".

This diff also adds some missing plumbing for return annotations for
closures and lambdas.

Reviewed By: @elgenie

Differential Revision: D1566028
Mass Config::GetFoo to Config::Bind migration (Part 1 of ??)

Summary: Let's start moving this ini migration along. We want to be able to use ini_get() with a
bunch of these, for example.

This focuses on APC and the debugger, with a bit of ancillary cleanup

Reviewed By: @ptarjan

Differential Revision: D1579248
Dont init request-local stream wrappers in Stream::getWrapper

Summary: Causes intermittent SIGSEGV with StatCache.

Reviewed By: @markw65

Differential Revision: D1581335
Enable StatCache in hphp/test/frameworks/perf

Summary: opcache does something fairly equivalent

Reviewed By: @JoelMarcey

Differential Revision: D1581389
Kill map from BlockId to region Block

Summary: RegionDesc now has an API for this, so just use it.

Reviewed By: @bertmaher

Differential Revision: D1581428
pass transport to teardownRequest

Summary: We need it for access logging

Reviewed By: @mxw

Differential Revision: D1581101
add --skip-database-install option to perf suite

Summary: To speed up the profiling/improvement workflow. Requires --i-am-not-benchmarking

Reviewed By: @JoelMarcey

Differential Revision: D1581839
Remove unnecessary includes to ir.h

Summary: Replace with forward declares or more appropriate headers.

Reviewed By: @edwinsmith

Differential Revision: D1579965
Fix leak in hphp_set_error_page

Summary: ExecutionContext is now "swept" rather than deleted.
I missed m_errorPage in the conversion.

It turns out that its always set from a String, and the only reads
from it read it and convert it to a String. So just store it as a
String.

Reviewed By: @edwinsmith

Differential Revision: D1583527
Allow hphpd to wakeup DateTime objects

Summary: It's required to initialize the native field m_dt

Reviewed By: @markw65

Differential Revision: D1571474