Remove deprecated `::File.exists?` Using `::File.exist?` instead.

Also fixed bug with symlinks what was checked the using `exists?` and `exist?` at same time, but in specs was mocked only `exists?`
So, one thing to consider is that sometimes the ruby library itself may call File.exist? or File.exists? so you should probably use expect(File).to_not receive(:exists?) and try to catch that and look at the backtrace, or else to continue to stub both.

Also if you simply refactor the logic in set_all it might make it clearer as it if what you're doing is correct or not, right now its hard to read.  The specs might or might not be correct, the code you're dealing with is more than a bit convoluted, which is why I'd like the patch to be as straightforwards and understood as possible.