Eval is less evil than monkey-patching a global

Closes #27

Due to the way that streams and the various FS methods interact with one
another, NOT monkey-patching doesn't work.

However, since the 'fs' module is effectively a process-level global,
making monkey-patchy changes to it can introduce some really weird behavior.
Even if such behavior is not actively harmful, it can end up being
applied multiple times, and wrapping 'fs.open()' over and over again
is a bit of a bummer when it comes to performance.

Mixing 'eval()' and a private/internal Node API kind of gives me the
heeby jeebies.  If anyone can come up with a less evil way to do this,
I'll be happy to accept a patch.
v2.1.0