Remove dead code + GraphViz support
This MR removes a lot of code, removed unused csv dependency and enable new lints.
The most interesting commits are 46b9b0ef and a2574b01, where manual review is recommended @lgaeher.
I discovered that the compiler does not detect unused code when an enum/function/struct is publicly available within a submodule/subcrate (e.g., spec_parsers within translation or radium "within" translation (workspace subcrate)).
The method that has worked so far is to restrict all pub methods to pub(crate) and go back to pub if needed.
Therefore, unused items within the crate are flagged, exposing unused code.
There are some tools that try to reveal unused functions, like warnalyzer, but fail to detect correctly.
However, newly marked pub(crate) items may even be private.
I think the best procedure is to :
- convert every
pubtopub(crate) - fix errors by reverting to
pub - remove unused code, if any
- convert every
pub(crate)to private - fix errors by reverting to
pub(crate)