added extension_dir and hhvm.extensions options and implementations also added a configuration option for extension_dir

Summary: Added two new ini settings extension_dir and hhvm.extensions. extension_dir is identical to the php extension_dir ini setting and hhvm.extensions is similar to the php ini setting extension except it is an array instead of a repeatable ini setting. Currently, we install extensions from both the config.hdf settings as well as these new ini settings in order to change people's workflow as little as possible. Depends on D1474402, Depends on D1463584

Reviewed By: @ptarjan

Differential Revision: D1474476
Implement a basic version of first-class enums in HHVM.

Summary: Implement a basic version of first-class enums in HHVM. Enums are basically represented as classes, but require special handling to use the underlying type for type checks when used as type hints.

Currently raises a fatal error if the underlying type can't be resolved when the Class is created (because it is a typedef or an enum that hasn't been defined yet). This is kind of unfortunate.

Reviewed By: @paroski

Differential Revision: D1454278