Better errors, segfault fixes, and File.read_pos/File.hflush methods

This pull request involves several augmentations to the Hadoop::DFS::File object, wrapping the hdfsPread and hdfsHFlush functions; with these, I believe that we will be at parity with what is currently provided by libhdfs version 2.0.

Furthermore, this request adds support for interpreting the errno which libhdfs sets in failure scenarios in a thread-safe manner by way of our new get_error helper function; all exceptions based on failure cases where this information has been exposed will now report this information.

Finally, it appears that RSTRING_PTR does not cast the VALUE to a Ruby String object prior to returning a pointer, which can manifest in the form of a segmentation fault; I've added a helper function, get_string, which will call ```<Ruby object>.to_s``` to ensure that all values are properly cast to a String.

Let me know what you think, and thanks for the consideration!