Implement roles into Template Haskell.

The biggest change is to the TyVarBndr type, which now can deal
with role annotations.