ConstPtr
Rusts std::ptr::NonNull wraps a *mut pointer. Sometimes this has implications that are not
desired. ConstPtr wraps NullPtr but removes the mutable and uninit API's. As consequence
it can only be constructed to point to a valid object (although it may become dangling when
the object becomes destroyed). This simplifies handling lifetime erased references because a
&reference implicitly coerces to a *const pointer and adds some safety net as in one can't
accidentally get a mutable reference to something that should been const.
'nostd' compatibility
By default the 'std' feature is enabled which pulls in dependencies on rusts stdlib. When one
disables this in 'default' then ConstPtr becomes no-std compatible.