Suppose you have a trait Trait and some type T: Trait, this trait is
automatically implemented for Trait itself, &Tr, Box<Tr>, Arc<Tr>, &T,
Box<T>, Arc<T>, etc. When DerefPlusSelf is implemented for T, this trait
is also implemented for T.
The trait automatically implements for D: Deref with D::Target. User may add
implementation of DerefPlusSelf<Target = Type> for some Type
via enable_deref_for_self, where Type can be str, [T], or a local type
(i.e. not an upstream type).