Add a faster native implementation of BoostingModel decision forests

Summary: This is a copy of D1519080 to try to debug test failures.

Rewrites www/flib/boosting/BoostingModel.php in C++ to be faster.
Should be a ~8x performance improvement over the JIT-ted Hack implementation.

Reviewed By: @​ailic

Differential Revision: D1521758
Implement async lambdas.

Reviewed By: @jwatzman, @elgenie

Differential Revision: D1524793
Make MemExceeded flag sticky

Summary: If someone swallows a oom exception, we want to raise it again asap.

Reviewed By: @jasone

Differential Revision: D1522906
Respect ParamCoerceModeFalse even when wrong number args passed

Summary: It was previously only applying to coersion failures.

Reviewed By: @ptarjan

Differential Revision: D1523394
classIsUniqueNormalClass wasn't handling enums.

Summary: Not breaking anything right now, but it's better to future-proof this.

Reviewed By: @swtaarrs

Differential Revision: D1522653
Guard on null ExpressionListPtr in alias manager

Summary: Noticed this while working on D1523396.
Calling an alias method like is_array() with no args
results in a segfault in repo mode when ep->getCount()
tries to dereference a nullptr.

Guard against it and let the normal course of the runtime
raise the appropriate error.

Reviewed By: @markw65

Differential Revision: D1524843
is_<type>() functions should be ParamCoerceModeFalse

Summary: But weirdly is_numeric()/is_scalar()/is_callable() return NULL.

Closes #3546

Reviewed By: @JoelMarcey

Differential Revision: D1523396