Refactor around the macro definitions into 3 files. Both converter and s...

...etter support Options
I think this will give `finalIdx == 0` if you pass a non-case class here. I think we need to abort if `finalIdx == 0`.