Added multiple implementations of FileResource.

This prepares the transition to using FileResource rather than JRubyFile
directly for any areas where both jars and regular files are to be
supported.
Added stat method to FileResource and refactored RubyFileStat to make use of it.

This way RubyFileStat doesn't need to do any more custom logic for jars.
Reworked ChannelDescriptor to use resources.

Added visitor pattern to FileResource so that ChannelDescriptor can contain logic of how to open different resources.
Make RubyFile use FileResource
Fix RubyDir to use file resources
Remove special handling of the JAR files and rely on resources instead.

NOTE: This may incur a performance penalty when using globs with jars,
because the globbing code will faithfully follow **/* by looking up children,
whereas before it created a pattern and matched against all jar contents.
Make RegularFileResource return 'true' if it's a broken symlink