I currently don't like how the xml is parsed. It is definitely
functional, but it is very strange. Serde is not made to deal with a
list of fields with the same name that aren't next to eachother in the
xml.
Splitting into binary and lib enables using the lib in tests.
main.rs is now a thin wrapper around the lib. In the future, the exact
code split should potentialy be changed so that main.rs does all arg
parsing and then calls into the lib with fully unwrapped parameters.