Implemented for any function whose parameters are all SystemParams —
this is what lets a plain fn my_system(time: Read<Time>) be passed
directly to add_system.
A runnable system — the type-erased form IntoSystem produces, so
different systems (different parameter lists) can live in the same
Vec<Box<dyn System>>.
Anything that can be fetched as a system function parameter —
implemented for Read/Write,
Query, Local,
Commands, tuples of SystemParams
(so a function can take several), and a few others. You generally don’t
implement this yourself unless you’re adding a new kind of parameter.