Have .dockerignore support Dockerfile/.dockerignore

If .dockerignore mentions either then the client will send them to the
daemon but the daemon will erase them after the Dockerfile has been parsed
to simulate them never being sent in the first place.

Closes #8330

Signed-off-by: Doug Davis <dug@us.ibm.com>
... continued. Since the use-case makes sense for the build context I'm proposing that we do not have `Remove(string)` be a part of the `TarSum` interface, but instead, have another interface like
```
type BuildContexter interface {
    TarSum
    Remove(string)
}
```

and include comments on the function of that method. Then in your code that needs to use `Remove()` you'll just need to type cast it as a buildcontexter (or whatever is a good name). This way there is a more clear distinction of function.