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 
Many of these methods feel like a decorator around `::Bundler.definition`.  If there were an instance that took the definition as a parameter to `initialize`, then it would be easier to inject a fake definition for testing, rather than having the current tight coupling between the project's Gemfile and the specs.