feat: add progressive pipeline runner for dfgraph
Implements dfgraph/pipeline.py with run_progressive() function that runs
the assembler pipeline (parse -> lower -> resolve -> place -> allocate)
individually, capturing the deepest successful IRGraph even when later
passes fail.
Key features:
- PipelineStage enum tracking progress through pipeline
- PipelineResult dataclass with graph, stage, errors, and parse_error
- Graceful error handling at parse stage (returns PARSE_ERROR)
- Error accumulation at resolve/place/allocate stages (stops but returns graph)
Verifies AC2.1, AC2.2, AC5.2, AC5.3