Abstract out OC sandboxing.
Log output generated when OC expands/runs programs.

To be consistent with Check Syntax.
Abstract out right file filtering.
Log functions too big to be inlined.

Patch from Matthew.
First stab at hooking the profiler up to OC.

Profiling is done from inside the eval, to minimize noise.

Use samplers directly, to get access to the profiler's data structures.
Put sandbox management in its own file.

To avoid circular dependencies.
Refactoring.
Only keep profile reports from the relevant file.
Propagate profile information to inlining analysis.
Prune profile info to only keep hot functions.
Keep profile entries that come from other files.

Otherwise, hot function set is only populated from the current file.
Rethink profiler integration.

Requires the program to manually call the profiler. This dumps the results in
a separate file.
When we have profiling information, prune inlining reports about cold code.
Refactoring.
Keep TR and mzc logs separate.

Simplifies post-processing.
Refactoring.
Fix handling of self out-of-fuel.
Use the right version of the log to determine misses.
Report "bridgehead" inlinings as successes, even if further inlinings fail.
Recognize "interesting" call sites.

These are call sites where one of the callees accounts for a large portion
of the total time of its caller.

When such call sites are considered inlining failures, we can refine
recommendations.

The concept of interesting call site is also useful as a building block
for higher-level patterns.