Added fd_assign, and gave fd_by_name a 'create' param

This allows fd_t objects to be auto-created.  It cleaned up the code in
fd_pipe and fd_file significantly.  Also added an is_const field to support
special named file descriptors which cannot be deleted by the controller.