File reordering (preparing for logic separation in multiple files, if needed).
Initiated logic separation.
Some cleaning.
Fixes.
A little bit more of reordering.
Changed hash synchronization from replicated convars (which don't seem to work) to stringtables (through util.AddNetworkString).
Fixed (how did it get broken?) ReadULong using bitwise operations without taking the sign bit into account.
Added __tostring metafunction to both FILE and DIRECTORY metatables.
Fixed broken stuff from the logic separation.
Single write for WriteULong and the filepath on server.
No more multiplications for ReadULong, only bitwise operations and additions.
ReadString now reads blocks of characters instead of single bytes.