Working Back into Master

This merge will bring most of the good changes into the main branch of this project. There are still known issues with the updater, the ports tree, and freebsd_update methods.

Following this merge, a new branch will be created which will represent a major re-structuring of the code, with many bug fixes. This code is being kept for posterity, and will be tagged so it can be retrieved at a later date.