Split up apply into the following steps:
- findUnreachable
- createStableOrder
- preAssignWeights
- canApplyInference
- extractProfile
- verifyProfileConsistency
With some specializations, apply should apply to BOLT stale profile matching
(D144500), or potentially a custom apply reusing some of the interfaces.
"stable order" confuses me. How about "fixed order" or simply "an order of blocks"?