Source code generated string enums with exhaustion support

Some time ago (over 4.5 years ago!) I wrote a blog post titled: "A better enumeration - Type safe from start to end" . While cool and so - it had some issues. Let's tackle them!