Get rid of the arbitrary bin/lib split and instead move as much as possible into the bin crate, which becomes the main crate again. The types and NBT handling are moved into separate crates, so they can be reused by nbtdump and regiondump.
Rustdoc can't deal with a bin and lib crate with the same name.
Errors returned from the callback stop the loop early.