This builder pattern refactors things so that we can use the same
code to generate manifests/etc. This means that if we make sure
that we exclusively use those, we can do testing there and keep
something common.
Change-Id: Ibc39f9b9e3e21b18fb255ba2a67d2d8ba3b5c585