Build from source

@mattgillooly 

Adds support for building from source. This allows a Gemfile to have a gem pointing to a local path or git repository. When the pipeline is deployed, gems will be packaged from their source.

Additionally adds the improvements to the `bootstrap_context` used for compiling templates for selecting how gems are downloaded from s3 and adding a reference to the s3 steps path.

/cc @peakxu 
As the general rule I agree with you about using class methods, but I feel like this may be one of the exceptions. This is really just an API into the Bundler universe, wrapping up calls to the inner plumbing of Blunder.

Not a lot to gain from being an instance, it has no real state. A few of methods pass the `group` parameter around which is required to interact with Bundler.