Refactor Package.

Make almost all attributes belong to the Package class and not instances, thus
reducing the amount of metaprogramming necessary.

Also, move stuff out of Package into various modules.
Transition toward class-based package attributes.
Add support for caveats.

This requires moving some UserInterface code to Package, because installing
multiple packages should result in only one caveat logging.
Have Versioner#installed_packages return packages, not titles.
Fix bug related to change in Versioner#installed_packages.
Refactor caveat logging.
Refactor Package#install.
Merge pull request #372 from ucarion/better-install-orders

Add caveats