Initial platform abstractions.
Fixes for Linux problems introduced during refactoring.
Fixing basic FreeBSD support.
Reverting linux-breaking ignore_hup change.
Cleaning up commented code.
Homogenizing code style.
Minor FreeBSD cleanup.
Cleaning up Makefile.
Merge remote-tracking branch 'heckendorfc/master'
fixup FreeBSD post-merge
Add a Vagrant VM for FreeBSD testing.
Initial test suite!
Update Travis config.

Run the tests, and run 32-on-64 tests.
We also need pexpect
Fix travis 32-on-64 test.
Drop the signal(2) special case.

For reasons I don't understand this is breaking in my 32-on-64 testing,
and the sigaction path still works.
Open /dev/null as read-write.

Slightly kinder to applications than expected to be able to write.
Add tty-stealing tests.