Genie:  Derive Bits_IO from vfs::filehandle
Genie:  Derive MemoryFileHandle from filehandle
Genie:  Reverse the terminal/pseudo-tty link

Usually, a file descriptor maps to a single filehandle.  But there's one
exception:  Terminal behavior (e.g. manage the foreground process group)
and tty behavior (e.g. read/write) are provided by different filehandles
linked together under a single file descriptor.  The primary filehandle,
which will be returned by relix::get_fd_handle(), contains a link to the
secondary filehandle.  The primary filehandle overrides Next() to return
the secondary filehandle, and certain methods (including ioctl() and the
verified downcast) call Next() if unsatisfied by the primary filehandle.

TerminalHandle links to ConsoleTTYHandle, but until now, PseudoTTYHandle
was linking to TerminalHandle.  Reverse that so we avoid duplicating the
code that delegates from primary to secondary.

The master pseudo-tty filehandle doesn't need to be linked to a terminal
filehandle at all, so now it isn't.  (The slave pseudo-tty filehandle is
secondary to the terminal, so return the terminal in the slave's place.)
Genie:  Clean up PseudoTTYHandle's terminal link

PseudoTTYHandle is now secondary, so don't override Next().  The primary
filehandle (TerminalHandle) implements GetFile(), so don't override that
either.