Scala macro-based typesafe object mapper