Bring Your Own Tarski Universe

Closes #10, #13, #25, #29, #36, #19, #39.

- Support for generalized key universes: you can still do something like "classic" vinyl with strings, but I encourage you to try a closed universe
- Template Haskell helper for giving semantics to your closed key universes
- Lets you use TypeLits, Singletons or something ad hoc. Doesn't matter. 
- No more preprocessor macros
- GHC 7.8 required