Fix .dockerignore when ignoring unreadable dirs

The initial `ValidateContextDirectory` implementation fails loudly when a file lacks read permissions in the current context. However that situation is valid if the file is included in the `.dockerignore` patterns. I was planning to use `.dockerignore` to exclude a volume created when running mysql + the local project using fig.

**note**: this is my first piece of go code, ever. Let me know if things need to be fixed :). Tests are passing locally, however I couldn't find any test related to the `.dockerignore` feature itself and I'm not sure how to reproduce the situation in tests. I was able to run `docker build` successfully with my local build and `.dockerignore`.

Refs #6579
I think we don't need this very specific functions. Can we just move "collecting excludes" code here from below?