Split up countable.h

Summary: Moved CountableHelper to object-data.h since it's only used for
ObjectData. Moved AtomicCountable to its own header file since it
really has nothing to do with normal countable objects. Removed most
includes from countable.h, fixing up cpp files where necessary.
Removed #define for STATIC and UNCOUNTABLE (const decls instead).
Cleaned up the refcount assertions.

Reviewed By: @jdelong

Differential Revision: D1753093

Signature: t1:1753093:1419107371:fc75bcb2e2385d4b16d5cbedbf2698dbf32d84db
Explicitly prepareForNextHHBC before doing singleton inlining

Summary: It is getting the correct bytecode offsets right now, but it's sorta
indirectly doing so (it's because of the prepareForNextHHBC call that we do
before any guards, to get them associated with that offset).  If one of the
guards is a stack guard (which I think happens only if I turn off
constrainStack and auto-constrain stack guards), then we might redefine the
stack in between prepareForNextHHBC and a PEI in the inlined singleton code,
which is an assertion failure about possibly throwing an incorrect stack state
now.  Fix this by explicitly setting the next hhbc stuff up before we try to
inline.

Reviewed By: @markw65

Differential Revision: D1731989
Remove a reference-capture default for escaping lambda in interp-minstr

Reviewed By: @oyamauchi

Differential Revision: D1738399

Signature: t1:1738399:1418439791:c62860db3eb6490d03512771fe7f699ef33a414b
Remove IRBuilder::gen overload that takes a BCMarker

Summary: I'm moving the initial gen code out of IRBuilder so it can use
functions that need HTS&'s (while making catch blocks), and was wondering why
we need this function.  We don't anymore.

Reviewed By: @alexmalyshev

Differential Revision: D1743438

Signature: t1:1743438:1418765637:b6f32a2f8f53b4d17525e376ca14a9ac76d9dd3b
Move initial gen() functionality out of IRBuilder

Summary: Gives it access to HTS& so it doesn't need to re-implement
spillStack().  This doesn't make much difference to create_catch_block for
trunk right now (slightly smaller impl), but it will reduce a bunch of code
duplication after spillStack() starts doing StStks in a local branch.  The
ExnStackState probably doesn't belong in ir-builder anymore either (and neither
does EvalStack and stackDeficit, really): they are over there presumably
because we needed the BlockState push/pop support for them, but they can't be
recomputed when frame-state is being reused for later analysis passes, so it's
a bit weird, but they can't just move out trivially right now.

Also for now just make the IRBuilder::gen version private (it's only used to
make jumps).  We can remove it later (but first we have to move cond() and
ifThen() and friends out of IRBuilder.)

Reviewed By: @swtaarrs

Differential Revision: D1743585

Signature: t1:1743585:1418817284:8e24d5d81c654d212651b530d035550faa394fea
Remove touchArgsSpillStackAndPopArgs

Summary: I'm pretty sure we used to do this so that we would have loads that
would be visible to the FPushCuf optimization that has since been removed, so
we don't need it anymore.

Reviewed By: @mhahnenberg

Differential Revision: D1744160

Signature: t1:1744160:1418775232:ee6ede839f05b59211c5e57de731a29e069f9cf6
Remove dead code in optimizeActRecs

Summary: This wasn't removed when knownPrologues was removed.  (And I am hoping
to replace optimizeActRecs with store-elim stack support soon anyway.)

Reviewed By: @edwinsmith

Differential Revision: D1744461

Signature: t1:1744461:1418779009:e14d96d089034102e9757368c757262e015e36f8
Fix suspend hook for AsyncFunctions, put back post-suspend for CreateCont

Summary: Split the suspend hook into one for eager and one for
suspendingResumed.

Reviewed By: @swtaarrs

Differential Revision: D1719244
Remove CRc flag from CallArray

Summary: Unclear why it would have that.

Reviewed By: @mhahnenberg

Differential Revision: D1750222

Signature: t1:1750222:1418955247:cafd73cdd213bafc25fdddb724a924b8e0137fc1
Break regions on Await opcodes

Summary: In a suspended resumable, the Await opcode translates to a RetCtrl.
This means we generate regions with a bunch of dead code following the Await.

Reviewed By: @alexmalyshev, @bertmaher

Differential Revision: D1752464

Signature: t1:1752464:1419034782:9c082598b97638ce53ae252d66b33ec728fd954a