Refactor channeldescriptor to use FileResource

This is part of the https://github.com/jruby/jruby/issues/1452 effort.

This PR is a bit more invasive, since it introduces the concept of RaisableException and removes some of the more specific exceptions in org.jruby.util.io package.

In future, ChannelDescriptor.open method can probably be abolished altogether by introducing a NullResource (which will cover /dev/nul, nul:) and ClassPathResource (which at its first iteration would support just opening a descriptor, but eventually should be able to also support list[] and other File related methods).