Type aliases

This is a fix for #121.

`expandRTypeSynonyms` should be performed "manually", at the previous definition could be used only for trivial types.

All basic tests pass and another bug of name clash is found at `test/todo/NameClash.hs`