Nested case class conversion with nice error messages.

Fixes #58
Review by @gzm0 @hubertp

Its definitely harder to read than two vals. (And it's actually more code)