uninstall files in chunks of 500.

This is intended to address #2122.

I saved a `stat` by not calling `file.exist?`, instead passing the `-f` flag to `rm`.  I would argue that is (strongly) preferable.

I changed the `.run!` method to `.run` (allowing `rm` to return an error code) purely to make the tests pass.  Here, I think this is tolerable but not preferable.  We should change it back after ironing out tests.

The test glitch occurs in 'snags permissions on ornery dirs, but returns them afterwords'. In the past, `ima_installed_file` was never getting deleted.  It appears that because the dir above was unreadable, `ima_installed_file` failed the `.exist?` test, and was silently skipped.  Now that the `.exist?` is gone, `rm` is actually attempted (and fails).

Of course, tests are still clean with `.run!` if the test suite is run under `sudo`.  However, the correct thing should be to update the "snags" test.  @phinze, I wasn't entirely sure what you were getting at in "snags", so I didn't alter it.