Implements a software installer, including a flexible upgrader that can manage schema changes, data representation changes, etc.