Simplify filesystem natives.

This patch does two things - first, it unifies the valve/system file system paths into a single type called a FileObject. For most natives, we never care which kind it is. Second, this introduces a helper class which has been LONG OVERDUE that should greatly simplify opening handles.

I also removed error checks on LocalToString, which albeit correct to have, we pretty much don't do anywhere so if those fail we're generally screwed anyway.
I _think_ this should be calling `Close` instead of closing the file handle directly? The Close function also isn't assigning NULL to `fp_`, so I believe the sequence of calling Close and then destructing a SystemFile would lead to a double close on a handle.