Cabalization!

Mhh.. normally I'd split this into several commits: Types for top-level
definitions, .cabal file, augment .gitignore and update README.md. Well,
I should discuss this with someone, I think, and/or look for other
projects. But most likely it ends up being personal preference and I
think my preference is small (really small), atomic commits. If I want
to keep them together I could branch and then merge so that everyone can
see what I did for cabalization.

Mhh. Writing helps. :)