Nested case class conversion with nice error messages.

Fixes #58
Review by @gzm0 @hubertp

I usually prefer to just check for .isEmpty rather than performing full pattern matching when it is not necessary. Up to you.