A Scala macro for converting a case class into its abstract equivalent.