Implement roles into Template Haskell.

The biggest change is to the TyVarBndr type, which now can deal
with role annotations.
Merge branch 'master' into roles