Generates identifiers for named union fields

* added tests
More tests (+ failing test for 'h :: t' pattern)