Remove duplicated code

Having the `shallowDeps` return a singleton list of `Version`s allows the same
formatting functions to be used for shallow and deep dependencies.
Use `showVersion` from `Data.Version`
Add cabal description and change precise to exact