Added discriminated unions.
Added labelled generic for sealed traits.
Major refactoring of (Labelled)Generic and TypeClass.
Merge branch 'topic/discriminated-unions'