arraykey: ReflectionParameter::getClass bug

Summary: ... arraykey is a special hiphop only typehint that does
 *not* correspond to a `ReflectionClass`

Reviewed By: @paroski

Differential Revision: D1589092
make first class enums non-extendable by regular classes

Summary: ... and therefore ReflectionClass::isFinal becomes true for
 ReflectionClass of enums.

Reviewed By: @jdelong

Differential Revision: D1589531
reflection support for first-class enums: enum_exists [1/2]

Summary: * function enum_exists : similar to {trait|interface}_exists
 * ReflectionClass::isInstantiable now returns false for enums

Reviewed By: @jdelong

Differential Revision: D1589055
Turn off profile-guided string specialization

Summary: It's causing a bunch of spurious guards on unused values in profiling
translations, which can then lead to unnecessary optimizing
translations.  This diff adds a runtime option to control this
optimization, and leaves it off by default.

Reviewed By: @swtaarrs

Differential Revision: D1590282