Fix bug with optionally grouped types

Fixes #23 again.
Implement type argument lists
Implement {Positive,Negative}Op