misc.rs
Put everything that was in `misc.rs` into their own files, with some opportunistic refactoring, because why not.
pub(crate)
pub
Eventually, there will probably be a `crate` visibility specifier that does the same thing as `pub(crate)`. This commit replaces `pub` with `pub(crate)`, so when `crate` is available we can easily switch to it.