Added quite a bit of documentation, and properised the cabal project.