Refactor and make Main actually parse/add input

This refactors the code slightly and makes it actually act over user
input, rather than hard-coded testing values. There's still a lot to do
here.

This is still haskell soup. But I'm happy we got around a lot of the
meta Cabal-hell we had to face.