Add ability to upgrade towers and refactor tower subclasses into attribute sets