Topic/auto codec

Added recursive type class encoding test. Also doubles as an example of potential issues with shapeless's typeclasses: if case class B depends on case class A, we need to explicitly provide the codec for A first.