Turn this into a proper cabal package

with cabal and everything