Fix hh start --wait

Summary: The `if env.wait ...` statement was never getting executed
because OCaml was grouping it under the error exit code block of the
pattern-match.

Turns out the warning silenced in D1701802 was a legit warning, ha. Not
sure how / why `--wait` was working before, though -- that code doesn't
seem like it's been changed in a while.

Reviewed By: @elgenie

Differential Revision: D1703935

Signature: t1:1703935:1416945865:fa4e0e9bcf47337b83304d4315a07657599637d3
Factor out BigHeap

Summary: This isolates the MemoryManager code that interfaces with malloc,
including the tracking of slabs and big objects. I also added a
MemoryManager::flush() api call for use when threads go idle.

Reviewed By: @mxw

Differential Revision: D1696129

Signature: t1:1696129:1416945407:d41642cdb36e83f6ff2f7f92553070460538477d