Tighten .gitignore patterns

We now use bin rather than run for binaries. And we should ignore specific directories rather than directory names at any level.