This avoids using cfg with the destination-crate's feature "complete"
in proc-macro "derive".
Quoting cargo:
using a cfg inside a derive macro will use the cfgs from the
destination crate and not the ones from the defining crate
In these two instances, the cfg was simply used to avoid emitting dead
code if the "complete" feature is not desired. By passing the "complete"
feature down to the derive crate and evaluating if there, we achieve the
same goal, without having to deal with suprisingly-valued and unexpected
cfgs downstream.
Alternatively, we could just evaluate the flag inside the derive crate,
and pass the feature flag to it.
The markdown rendering is too complicated at the moment
and slows the rest of development down too much. We can
add it back in later.
The generated code for the help string now writes
directly to stdout, instead of building up a String,
this leads to nicer code and is probably faster.