First pass on a more programmable pipeline.

What this allows:

```ruby
balanced_ci_pipeline 'foo' do
  pipeline %w{test build custom}

  # Just overriding this one attribute from the test job, others are left as the defaults
  job 'test' do
    command 'asdf'
  end

  # build job is entirely the default one

  job 'custom' do
    command 'qwer'
    inherit 'foo-test'
    # New job from scratch here
  end
end
```