Make publicly exported types implement Debug trait
It seems to have become common practice for publicly exported types in a library to implement the Debug trait. Doing so potentially simplifies trouble shooting in client code directly but it also is a requirement in case said client code embeds such objects and wants the wrappers to implement this trait. For a deeper discussion of this topic please refer to https://github.com/rust-lang/rust/pull/32054
To that end, this change adjust all publicly exported types to derive from Debug. It also adds a crate wide lint enforcing this constraint.