Defined new abstract build.Volume and corresponding
Refactored compilation of main COPY or VOLUME instruction for
application files to use the new instructions and moved injection of
these instructions out of the compiler and into VariantConfig. The
latter can be smarter about the following cases:
- When copies is set, simply depend on artifacts for the application files and do not copy anything from the build host.
- When sharedvolume is true, inject a build.Volume instruction for the application working directory.
- When neither of the above are set, copy application files from the host.