Made the process module save the context of the file descriptor table.

This allows nested wait_fds without any effort.
I made some changes to the bytecode spec while writing the VM.

This includes:
  - Combining REGISTER-ON-READ and REGISTER-ON-CLOSE to REGISTER-FD
  - Removing UNREGISTER-FD
  - Combining CREATE-SCOPE and PUSH-SCOPE
  - Combining DESTROY-SCOPE and POP-SCOPE
Fixed a minor typo and added a Tuple type.
Added a FileResource to track Pipes and Files in the VM.
Wrote the VM.

Although it hasn't been tested, GCC compiles it (-c) without complaint.
Fixed some bugs in the VM, so it now runs the sample program.