blockfreq: Stop using range-based for to traverse Loops

A follow-up commit will need the actual iterators.

<rdar://problem/14292693>
blockfreq: Use LoopData directly

Instead of passing around loop headers, pass around `LoopData` directly.

<rdar://problem/14292693>
blockfreq: Embed Loop hierarchy in LoopData

Continue refactoring to make `LoopData` first-class.  Here I'm making
the `LoopData` hierarchy explicit, instead of bouncing back and forth
with `WorkingData`.  This simplifies the logic and better matches the
`LoopInfo` design.  (Eventually, `LoopInfo` should be restructured so
that it supports this pass, and `LoopData` can be removed.)

<rdar://problem/14292693>
blockfreq: Encapsulate LoopData::Header

<rdar://problem/14292693>
blockfreq: Store the header with the members

<rdar://problem/14292693>
blockfreq: Expose getPackagedNode()

Make `getPackagedNode()` a member function of
`BlockFrequencyInfoImplBase` so that it's available for templated code.

<rdar://problem/14292693>
blockfreq: LoopData::MemberList => NodeList

<rdar://problem/14292693>
blockfreq: Separate unwrapLoops() from finalizeMetrics()

<rdar://problem/14292693>
blockfreq: Unwrap from Loops

When unwrapping loops, just visit the loops rather than all nodes.

<rdar://problem/14292693>
blockfreq: Pass the Loop directly into unwrapLoopPackage()

<rdar://problem/14292693>
blockfreq: unwrapLoopPackage() => unwrapLoop()

<rdar://problem/14292693>
blockfreq: Scale LoopData::Scale on the way down

Rather than scaling loop headers and then scaling all the loop members
by the header frequency, scale `LoopData::Scale` itself, and scale the
loop members by it.  It's much more obvious what's going on this way,
and doesn't cost any extra multiplies.

<rdar://problem/14292693>
blockfreq: Remove dead code

<rdar://problem/14292693>
blockfreq: Document high-level functions

<rdar://problem/14292693>
blockfreq: Clean up irreducible testcases

Strip irreducible testcases to pure control flow.  The function calls
made the branch weights more believable but cluttered it up a lot.
There isn't going to be any constant analysis here, so just use dumb
branch logic to clarify the important parts.

<rdar://problem/14292693>
blockfreq: Use better branch weights in multiexit test

The branch weights were even before.  Make them different.

<rdar://problem/14292693>
blockfreq: Document assertion

<rdar://problem/14292693>
blockfreq: Only one mass distribution per node

Remove the concepts of "forward" and "general" mass distributions, which
was wrong.  The split might have made sense in an early version of the
algorithm, but it's definitely wrong now.

<rdar://problem/14292693>