90a6c035

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Rebuild centjes-chart: pure report IR, diagrams backend, tests

Restructure the centjes-chart package around a backend-agnostic, pure
report so the data pipeline is total and testable and rendering is isolated:

- Centjes.Chart.Report: ChartReport/ChartSeries IR plus a typed ChartError
  (unknown currency / no data / conversion failure) with a ToReport instance
  that delegates to ConvertError. produceChartReport is total; the old
  fromJust/minimum/maximum partials are gone. sampleStepFunction does the
  step-function carry-forward and is property-tested.
- Centjes.Chart.Render: the only place precise money becomes Double; renders a
  stacked-area SVG via Chart + Chart-diagrams (drops the cairo C dependency).
- Command/All + OptParse: currency, account filter (reusing Centjes.Filter),
  output path and title are now settings instead of hardcoded.
- Add centjes-chart-test: sampleStepFunction properties, a valid golden, and
  error goldens for every ChartError constructor.
- Re-value held balances at each day's rate; share the per-day price graph.
- Fix copy-pasted switzerland option config; ensureDir on the output path.