Factor out most of tryInline()

Summary: We want to try incorporating inlining in the hottrace selector, with or
without including it still for profiling translations.  We'll start by
just refactoring as much of the decision logic as possible.

Notable logic that we can't just shunt into a function are the inlining
depth checks and the requirement that FPush* not be interpreted.  The
former I'll clean up (right now we do the stack depth and inlining depth
checks differently, which is silly).  The latter we'll try to solve by
just breaking tracelets after an FPush whenever it's interpreted, and
documenting this limitation (and, ideally, fixing it, someday).

Reviewed By: bsimmers, ottoni

Differential Revision: D1405929
Rewrite inlining logic

Summary: Rewrite the inlining decision-making mechanism so that it can be more
easily used with arbitrary tracelet selectors.

This also fixes a bunch of bugs (or at least misbehaviors) in inlining:

- Before, if we were going to inline a stack of calls four-deep, we
  would produce tracelets for the rest of the callstack at each callee,
  which is O(n^2).  Let's do this in O(n) instead.

- Before, when we produced the tracelet for the first callee to analyze
  its shape, we would do so with inlining turned on.  If we had a stack
  of calls five-deep in total (which exceeds the depth limit), the
  tracelet for the first callee would successfully inline four calls,
  but we would fail when trying to inline that back into the original
  caller.  Instead, we should just elect not to inline the fifth-nested
  call.

We also change "inlining cost" to measure the cost of a single inlined
callstack, rather than the total cost of all inlining sites in a single
function.

This is a lot cleaner, and also we get to have a Decider class---who
doesn't want that?

We also get rid of the hot-calling-cold tight cost limit for now, for
two reasons:

  1/ It seems like we should be -more- willing to inline into hotter
     functions.
  2/ We have to track the first-level callee, which is not hard but
     slightly dirty and I didn't do it.

Reviewed By: @swtaarrs

Differential Revision: D1409050
Stop using NormalizedInstruction in InliningDecider

Reviewed By: @ottoni

Differential Revision: D1421846
Code motion in class.cpp

Summary: Just reorder the functions in class.cpp to match the header.  Also
delete some silly and unused private methods, and inline some one-liner
methods that invoke other inlined one-liner methods.

Reviewed By: @jdelong

Differential Revision: D1406173