Use transformers instead of mtl
Add a type signature to main
Warning cleanups
Rename combine to avoid clash with Data.Hashable combine

Data.Hashable.combine does not exist in older Data.Hashable, so the
hiding clause breaks the compilation.