feat(leveling): lexicographic objectives in streams and run configs
ScheduleStream.bestByLex selects by ordered tiers — the second scorer
only breaks ties on the first — and RunConfig gains an
objective.lexicographic section (ordered scorer instanceIds) that best()
honors, with weights staying report-only. Motivated by a reference
pipeline whose selection is a 4-tuple (lateness, labor cost, peak
headcount, makespan) that a single weighted sum cannot express.