This is part of the #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).
Added a RaisableException to ChannelDescriptor interface.
Replace custom ChannelDescriptor exceptions to use RaisableException
Move descriptor interaction logic to resources.
Talked to @ratnikov about making this slightly more backwards compat for 1.7 branch and is just closing because I keep clicking on this thinking it has been updated...just re-open or submit a new one when it is ready.