Build helper (build.rs glue)

The trivial helper crate (canopen-eds-build (BB_0085)) so downstream consumers run codegen with one build.rs invocation and one include! line.

Feature: Build helper (build.rs glue) FEAT_0066
status: open
satisfies: FEAT_0060
is refined by: CON_0020
is implemented by: BB_0085

A trivial helper crate so downstream consumers run codegen with one build.rs invocation and one include! line.

Requirement: Builder API shape REQ_0760
status: open
satisfies: FEAT_0066
is verified by: TEST_0650

canopen-eds-build shall expose Builder::new().glob(<pattern>).backend(<backend>).out_file(<name>).build() returning Result<(), BuildError>. The backend parameter shall be generic over CodegenBackend per CodegenBackend trait shape (REQ_0730).

Requirement: Output written to OUT_DIR REQ_0761
status: open
satisfies: FEAT_0066
is verified by: TEST_0650

The helper shall write the generated module to $OUT_DIR/<out_file> so consumers wire it in with include!(concat!(env!("OUT_DIR"), "/<out_file>"));.

Requirement: Cargo rerun-if directives emitted per EDS input REQ_0762
status: open
satisfies: FEAT_0066
is verified by: TEST_0651

The helper shall print cargo:rerun-if-changed=<path> for each EDS file matched by the glob and for the build script itself, so cargo re-runs codegen exactly when an input changes — not on every build.

Requirement: Generated output passes through prettyplease REQ_0763
status: open
satisfies: FEAT_0066
is verified by: TEST_0652, TEST_0680

Before writing the output, the helper shall format the TokenStream via prettyplease::unparse so the file is human-readable when diffed or inspected (per Use prettyplease, not rustf... (ADR_0076)).

Requirement: Parser warnings surface as cargo warnings REQ_0764
status: open
satisfies: FEAT_0066
is verified by: TEST_0653

Parser warnings raised under Liberal parsing — warn and ... (REQ_0725) shall surface as cargo:warning=<line>: <kind> lines so they appear in cargo build output. A strict mode that promotes warnings to errors is not provided in this round.