raise Errno::* instead of RuntimeError

I need more granularity and visibility of errors for using extended attributes associated with FUSE filesystems.

I think this is the "right" behaviour but it is a change to the API since code that currently rescues RuntimeError will now need to rescue SystemCallError.

I have only got Linux to test with. I'm not able to test on Windows but reading the code would suggest that Windows errors behave differently anyway - eg get raises error on missing key, but remove does not.