add wildcard support to copy/add (part 2)

For issue #6820  - adding support for specifying wildcards in the src of ADD and COPY

Not a lot of new code here. Most of this is just allowing calcCopyInfo() to be recursive so that as we expand the wildcards we can let it add new CopyInfo's structs to the list of resources to be copied.  However, during this process I did clean-up some of the code in there - just a little.

Note that I tried to make it similar to the command line's cp command w.r.t. multiple vs single src copies. In particular, when you copy a single src the target can be either a dir or a filename.  But in the case of multiple src's it must be a dir.  Well, the determination of whether its a single vs multiple is done _after_ the wildcard expansion so that if "abc*" only maps to a single file then target doesn't need to be a dir in the case of "COPY abc* ...".

Additionally, w.r.t. cache checking, "COPY abc* ... " and "COPY abc ..." will map to the same cache entry, assuming "abc*" only finds "abc".

Signed-off-by: Doug Davis <dug@us.ibm.com>
One thing that concerns me, is that users will reasonably expect to be able to use 'normal' commandline wildcards as Dockerfiles are supposed to be like running things by hand. So at minimum, it would be good to add some examples for often used shell wildcards - to reassure them that `Go's rules` are not actually some new scary thing they need to read and learn too - or at best, to be able to change the doc to 'the normal Unix wildcard matching, plus extra magic added by ...