More consistent error handling across Orbital
Currently there is a mix of orbital-core Error, String, and io::Error in different functions.
I think we can converge on more consistent use of Error, and add some From conversions for it, and remove a lot of ".map_err()" calls in the code.