Add memory protector to hhvm thread scheduler.

Summary: Introduced an outstanding memory checker thread on each proxygen server
instance. This memory protector periodically check the current actual
free memory, once it is lower than some configured threshold, a flag will
be marked so that new coming requests will be quened until that flag is
reset.

Once the free memory amount become back above the threshold, the
protector flag is reset. Meanwhile, the memory protector will
perform some extra "notify"s to the job queue, so that previous
queued jobs can be sweep up shortly.

The following parameters are configurable by hdf:

MemoryThreshold: the threshold of free memory, default as 512MB.

MemoryCheckFreq: the frequency of memory checking, default as 3s

QueuedJobsReleaseRate: the rate of extra "notify"s to release
previous queued jobs, default as 3, which means giving the job queue
3 notifies every secs, here P = QueuedJobsReleaseRate.

Reviewed By: @markw65

Differential Revision: D1396273