Clean up tests and organize them better.

This is a combination of 21 commits, rebased into one. A summary of what
was done:

Extract Directory tests to their own file
Begin extracting some FileSystem tests
Extract FileUtils tests to their own file
Remove puts statements from tests
Fix overwritten test names (tests weren't running)
Get rid of bare unicode and binary strings
Continue reorganizing tests
Clean up tests a bit
Move Dir test to appropriate file
Simplify `test_directory_foreach`
Extract raw variables to functions in dir_test
Extract common code to a method
Small syntax change & variable renaming
Use `assert_equal` instead of `assert ... == ...`
Create an `assert_exists` test helper
Extract assert_not_exists helpers
Use `assert_not_equal` when appropriate
Extract `FileUtils.chown` tests to their own file
Extract `touch_file` helpers into `test_helper`
Break dir_glob test into smaller, clearer tests
Break up `chmod` tests into smaller units