Scala case class builder design pattern using Miles Sabin's shapeless library