message: Add an evil ObjectClass::cast() helper
diff: use std::fmt;
  +use std::mem;
  +use std::ptr;
  use crate::internal_prelude::*;
  @@ -48,6 +50,13 @@ pub trait ObjectClass: Sized {
  &mut *(self as *mut Self as *mut T)
  }
  + unsafe fn cast<T: ObjectClass>(self) -> T {
  + // This method requires you to be 18 years or older to use it
  + let obj = ptr::read(&self as *const _ as *const _);
  + mem::forget(self);
  + obj
  + }
  +
  fn debug_fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
  // TODO: this can moved out if/when specialization lands in stable
  h5lock!({
  