Refactor with builder support

Refactor the builders to so that a user may specify one of 2 paths:
system packages or docker containers. This change also encompasses a
bunch of other minor changes.  This is being checked in in order to
get some minimally viable changes upstream.