Handle exit or suspend of the shell

Hi Ravi,

Here are some commits that add object-oriented wrappers to the Unix calls (especially fork()) so that processes get cleaned up nicely when bash exits or suspends itself.

You should now be able to run `exit` or `suspend` in bash and have forked-ferry successfully also exit or suspend. (If you suspend, typing `fg` should bring you back to the bash.)

When forked-ferry dies, it makes the shell die too and cleans up the terminal.

Please let me know if you have any questions -- I realize there's a lot of code here so please don't be shy if something is confusing. Going through them one-by-one may make it simpler.

Cheers,
Keith