Part of this work was done by @the-dr-lazy in
https://github.com/ajnsit/purescript-typeable/pull/3.
GOOD:
Now there is no more dependence on dictionaries being passed as function
arguments at runtime.
BAD:
1. However, we still depend on the dictionaries being stable at runtime.
2. We now also assume that the output of the new function `makeTag` will
never be cached.