add dotfiles support

#492 with whitelist support
Modifying the array in-place is definitely faster:

```ruby
require 'benchmark'

Benchmark.bmbm do |x|
  x.report('#<<') do
    a = []
    50_000.times { a << 1 }
  end

  x.report('#+=') do
    a = []
    50_000.times { a += [1] }
  end
end
```

```
          user     system      total        real
#<<   0.010000   0.000000   0.010000 (  0.008376)
#+=   2.310000   3.880000   6.190000 (  6.208789)
```

Not that it matters much in this case, but there’s no reason to use `+=` over `<<` here.