Refactored and trimmed down repository

Cut out some unused and unnecessary code. Rather than keeping the
contents of all the installed packages tracked in the git repository, we
now instead maintain a list of required packages. At startup, we install
any of the packages in the list that aren't already installed.