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.
6 jobs for topic/derive-from-debug in 5 minutes and 9 seconds (queued for 1 second)
latest
Status Job ID Name Coverage
  Build
passed #8326
build:beta

00:01:05

passed #8327
build:nightly

00:01:19

passed #8325
build:stable

00:01:04

 
  Test
passed #8329
test:beta

00:02:11

passed #8330
test:nightly

00:01:38

passed #8328
test:stable

00:02:22