Adds support for variable arguments, uses exceptions quite a bit more

I finally decided to teach myself how Ruby C extension variable arguments work, and with this newfound knowledge I've tweaked this code to support setting some sane defaults on numerous methods:

copy(from_path, to_path, to_fs=nil) (uses current Hadoop::DFS::FileSystem if none supplied)
chmod(path, mode=644)
delete(path, recursive=false)
move(from_path, to_path, to_fs=nil) (uses current Hadoop::DFS::FileSystem if none supplied)
open(path, mode='r', options={})
Hadoop::DFS::FileSystem.initialize(host='localhost', port=8020)
set_replication(path, replication=3)

These all seem to work by my current testing, though I would be much obliged if you'd look over things to be certain that they are in a happy state.

Hope this helps, and thanks much!

![tumblr_inline_mi8bu9uc5i1qz4rgp](https://f.cloud.github.com/assets/15283/499673/c15afcb6-bc53-11e2-8987-36d96d89aae2.gif)