[DEVEXP-346] Allow docker type build from a repo with additional directory

This is the initial part of the work behind adding the additional directory to docker builds, especially this commit covers restructuring the `BuildInput` object splitting the docker related and STI related stuff into sub-objects. 
Still to do: 
- [x] docs
- [x] build image
I know this isn't new with this PR but I still don't like this logic. If the build input specified a registry, but there's no `.dockercfg`, this will still attempt to push. That will work fine if the registry doesn't require authentication, but will fail otherwise.

Also, building without pushing to a registry doesn't serve much of a purpose, other than it means you can test builds without having to stand up a registry. I'd like us to quickly move to requiring a registry - if not part of this PR, then soon after.