Make install_version aware of already installed packages and their versions

In two regards:
* If a package has already been installed and the version is compatible, simple do not install the package
* If a package has already been installed, but the version is incompatible, throw an exception