Add a few more comments for inference modules
Instrumentation for the function, vector and struct contracts.

Allows a profiler to detect when we're checking a contract.
First attempt at a contract profiler.

Breaks down time spent in contracts by contract, callee, etc.

Note: Original version dates from Jan/Feb, but I rewrote the git history.
Add a module graph view that shows contract costs per boundary.
Move get-times to utils.rkt, to use it from the contract profiler.
Display time in milliseconds, not in samples.
Render module graph.
Consider original blames and their swapped versions to be equivalent.
Factor out dot rendering.

Can't use redex's version because it needs the GUI.
Add boundary view of contract costs.
Simplify rendering.
Print cost breakdown to a file.
Return what the profiled code returns.
Add documentation.
Fix unsound unary fixnum subtraction optimization.

Closes PR13826.
Fix unsound fxquotient optimization.

Closes PR13827.
Add #:reduce argument to traces.

Add a new #:reduce argument to traces (and traces/ps) that defines the
function to use when applying the reduction relation.  This way a
function could selectively display some subset of possible reduction
traces instead of all.