Added iter function to package_list
new global for installing/removing/updating packages: changes is a package_list
Refactored install command.

install command behaviour has changed from before. It should now
be more robust and is seperated into seperate functions for installing and
dependency management.
install command now treats tool errors as errors and dies appropriatly